2017-02-06 8 views
0

私はCordova/Ionicで作成されたアプリケーションを持っています。私はAngularJSを使用しています。私は次の問題があります。TypeError:読み取り専用プロパティに 'done'を割り当てられません。<Object>

TypeError: Cannot assign to read only property 'done' of #<Object> 
at fn.assign (eval at <anonymous> (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:1:0), <anonymous>:4:390) 
at $$writeModelToScope (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38359:5) 
at writeToModelIfNeeded (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38353:14) 
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38347:9 
at validationDone (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38275:9) 
at processAsyncValidators (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38258:9) 
at $$runValidators (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38202:5) 
at $$parseAndValidate (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38340:10) 
at $commitViewValue (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38308:10) 
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38441:14 

TypeError: Cannot assign to read only property 'criticality' of #<Object> 
at fn.assign (eval at <anonymous> (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:26457:15), <anonymous>:4:482) 
at $$writeModelToScope (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38359:5) 
at writeToModelIfNeeded (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38353:14) 
at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38347:9 
at validationDone (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38275:9) 
at processAsyncValidators (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38258:9) 
at $$runValidators (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38202:5) 
at $$parseAndValidate (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38340:10) 
at $commitViewValue (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38308:10) 
at $$debounceViewValueCommit (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:38438:12) 

私は、件名にいくつかの研究を行っている後、私はあなたのJavaScriptファイル(click here for the documentation explaining this)で'USE STRICT'を使用する場合、このタイプのエラーが表示されていることに気づきました。問題は私が決してしなかったことです。私は'USE STRICT'を使用していません。今ここにはさらに奇妙なことがあります。この問題はAndroid 4.4.2搭載のSamsung GT-N5110タブレットでのみ発生しています。最新のアップデートがインストールされたSamsung Galaxy S7では発生しません。コマンドionic serveを使用してコンピュータ上のアプリケーションをランチングすると、それは起こりません。意図どおりに動作します。 Samsungのタブレットでのみ発生します。私は多くのことを試みましたが、私は解決策を見つけることができません。これらが錠剤であることは重要です。なぜなら錠剤は私たちが仕事に使う錠剤なのですから。

これは複数の変数で発生しますが、最初のエラーメッセージのように変数 'done'のコードを提供します。

私は

<div class="card" ng-repeat="item in etapes" ng-click="itemDetails(item.id)"> 
    <div class="item item-text-wrap"> 
    <p><b>{{'components.inspection.etape.card.title' | translate}}</b> {{item.name}}</p> 
    <p><b>{{'components.inspection.etape.card.duration' | translate}}</b> {{item.duration}} minutes</p> 
    <p><b>{{'components.inspection.etape.card.description' | translate}}</b></p> 
    <p ng-bind-html="item.description"></p> 
    <ion-checkbox ng-disabled="completed" class="item item-input" ng-model="item.done" ng-true-value="1" ng-false-value="0" ng-click="$event.stopPropagation()" ng-change="itemDone(item)" style="width: 100%; border: 0">{{'components.inspection.etape.card.completed' | translate}}</ion-checkbox> 
    </div> 
</div> 

'を行って' JSファイルの値を変更するにはion-checkboxをクリックしてビューが(メソッドが$ scope.itemDoneある)

angular.module('app.controllers') 
.controller('etapeController', ['$state', '$stateParams', '$scope', '$translate', 'Inspection', 'InspectionItem', 'ItemPhoto', '$ionicHistory', 'Camera', '$ionicPopup', '$q', 'InspectionTree', 'InspectionEtape', 'Loading', 'ExportInspection', 'EtapeComment', 'CommentPhoto', 
    function ($state, $stateParams, $scope, $translate, Inspection, InspectionItem, ItemPhoto, $ionicHistory, Camera, $ionicPopup, $q, InspectionTree, InspectionEtape, Loading, ExportInspection, EtapeComment, CommentPhoto) { 
     var inspectionId = $stateParams.inspectionId; 
     var itemId = $stateParams.itemId; 
     $scope.etapes = []; 
     Loading.show(); 

     var loadingPromises = []; 
     loadingPromises.push(
      InspectionEtape.getByInspectionId(inspectionId).then(function (f) { 
       for (var i = 0; i < f.length; i++) { 
        var item = {} 
        item = f[i]; 
        $scope.etapes.push(item); 
       } 
      })); 
     loadingPromises.push(
      Inspection.get(inspectionId).then(function (res) { 
       $scope.completed = res.status; 
      }) 
     ); 
     $q.all(loadingPromises).then(function() { 
      Loading.hide(); 
     }) 


     $scope.itemDetails = function (id) { 
      $state.go("app.inspection_etape_comment", { inspectionId: inspectionId, etapeId: id }); 
     } 

     $scope.itemDone = function (etape) { 
      if(!$scope.completed) 
       InspectionEtape.updateChecked(etape.id, etape.done == true ? 1 : 0); 
     } 

     $scope.tryFinishInspection = function() { 
      $state.go("app.inspection_summary_edit", {inspectionId: inspectionId}); 
     } 
    }]); 

多くを過ごした後問題の原因を突き止めようとした時、私はコミュニティに助けを求めることにしました。私はとても感謝しています!前もって感謝します。より明確にする必要がある場合は、私に教えてください!

答えて

1

私は解決策を見つけました。それは古いデバイスでは動作しませんでしたが、新しいデバイスで動作したので、私はシステムwebview上にwebviewをインストールすることを考えました。だから、私がしたのは、クロスウォークのwebview(cordova plugin add cordova-plugin-crosswalk-webview)をインストールしていたので、私の問題は解決しました!

+0

は私のために働きます!ありがとう!! –

関連する問題