1

次のような AngularJS スコープ外のオブジェクトがあります。

obj = { isBig : true, name: "John" ... }

多くのパラメーターがあり、angular スコープの外側で作成され、angularJS の外側で更新されます (たとえば、jQuery で行う ajax 呼び出しを介して)。

コントローラー内に次のように記述します。

$scope.obj = obj;

オブジェクトの変更をリッスンしてビューを更新するイベントを作成するにはどうすればよいですか? イベントはオブジェクトの変更です

具体的にはobj.isAjaxCallFailed = true/false、ビューで次のように使用するというパラメーターがあります<div ng-show="obj.isAjaxCallFailed"></div>

動いていない。使っ$onてみたのですが、やり方がわかりません。

4

1 に答える 1

1

$watch()onを使用しobjて変更をリッスンします (コントローラー内):

$scope.$watch(function() {
   return obj;
}, function(value) {
   if(value) {
      $scope.obj = obj;
   }
}, true);

を作成または更新するコード内の場所でobj、 を使用$rootScope.$apply()して監視を開始します。

function someCallbackOutsideAngular(data) {
   var $rootScope = angular.injector(['ng']).get('$rootScope');
   $rootScope.$apply(function() {
      obj.someKey = data.someValue;
   });
}

注:angular.injector(['ng'])おそらくコールバックの外側のどこかに設定する必要があります (常に実行する必要はありません)。

于 2013-01-28T12:11:16.990 に答える