0

これが私の状況です。アプリに「編集」画面があります。この画面をロードするために、window.postMessage イベントを介してオブジェクトを渡しています。編集ページのコントローラーでこの postMessage イベントをリッスンし、渡されたオブジェクトを「患者」というスコープのプロパティに割り当てています。次に、編集ページのマークアップで、ng-repeat を使用して「患者」オブジェクトの配列にバインドしています。問題は、受信したデータを表示するためにページが更新されないことです。
コントローラーでのイベント ハンドラー コードは次のようになります。

window.addEventListener("message", function(event) {
    if (event.data.view === 'edit') {
        $scope.patient = event.data.patient;
    }
});

患者オブジェクトにバインドするマークアップは次のようになります。

<div ng-repeat="dataItem in patient.fields | filter:{display:true}">
    <div class="row" >
        <div class="col-xs-12">
            {{dataItem.displayName}}:
        </div>
    </div>
    <div class="row" >
        <div class="col-xs-12">
            <input type="text" style="width: 100%;" ng-model="dataItem.value" /><br />
        </div>
    </div>
</div>

データは正しく読み込まれ、$scope.patient プロパティは完全に読み込まれますが、画面は更新されません。ただし、RESTAngular を使用して単純な 'GET' 呼び出しを追加し、呼び出しの結果を使用しなくても、ページは正しく更新されます。それはなぜですか?無意味な RESTAngular 呼び出しなしでページを更新するにはどうすればよいですか? RESTAngular 呼び出しで動作するコードは次のとおりです。

window.addEventListener("message", function(event) {
    if (event.data.view === 'edit') {
        patient = PatientRestangular.one('patients', event.data.patientId);
        //this is a hack
        //the data will not load on the edit screen without a call to 'get()'
        patient.get().then(function(){
            $scope.patient = event.data.patient;
        });
    }
});
4

1 に答える 1