2

そのため、最近、次のようなものを更新しています。

$scope.arrayOfThings = [];

function setArrayOfThings() {
     thingsService.get().then(function (things) {
         $scope.arrayOfThings = things;
     });
}

$scope.$on('arrayOfThings.add', setArrayOfThings);

このようにするには (あまり知られていないプロミスのバインドへの統合を使用します...):

$scope.arrayOfThings = thingsService.get();

arrayOfThingsしかし、コレクションが別のコレクションから変更されたときに、強制的に更新 (または再解決) するにはどうすればよい$scopeですか?

4

2 に答える 2

0

arrayOfThings は子スコープ内でのみ表示されるため、子スコープで arrayOfThings を変更すると、とにかくデータ バインディングが維持されます。arrayOfThing がイベント (DOM イベント、$broadcast など) から変更された場合、データバインディングは $scope.$apply によって手動で解決する必要があります。

于 2013-08-30T13:10:34.557 に答える
0

変更の通知を受け取りたいコントローラーのサービス呼び出し thingsService.get に監視を設定する必要があります。このような:

$scope.$watch(thingsService.get, function(newVal, oldVal){
  $scope.arrayOfThings2 = newVal;  
} );

これは、そのサービスを新しいコントローラーに注入することを前提としています。

于 2013-08-30T14:02:01.577 に答える