如何在AngularJS中观看服务数据?

时间:2014-03-17 18:22:15

标签: angularjs angularjs-scope angularjs-ng-repeat

myApp.directive('myView', ['myService',function($scope) {

  return {
    restrict    : 'C',
    template    : '',
    templateUrl : 'myView.html',
    controller  : function($scope,myService){
                    $scope.items = myService.$data;

                    $scope.$watch('myService.$data' , function(newVal, oldVal, scope) {
                     console.log("Watching items ...");
                    });
                  },

  };
}]);

我正在使用上面的代码,我想在其服务中定义myService。$ data。 $ watch在加载控制器时第一次调用,在代码中的其他地方我更新服务变量$ data。当我使用ng-repeat指令并绑定$ data时,这会反映在UI中 根据我在UI更新之前的不足,我必须再次调用这个特殊的手表,但事实并非如此。所以我假设我没有正确使用手表。

1 个答案:

答案 0 :(得分:0)

只是做:

$scope.$watch(
    function() { return myService.$data; },
    function(...) { /*same*/ }
);

<强> BUT:

如果$data是对象,您可能希望将,true添加到手表中,以便即使内部属性发生更改也会收到通知:

$scope.$watch(
    function() { return myService.$data; },
    function(...) { /*same*/ },
    true
);

代码中的声明是错误的。它应该是(仅显示更改):

myApp.directive('myView', ['myService',function(myService) { // NOT $scope
    ...
    controller: ["$scope", function($scope) { // YOU GET myService FROM THE DIRECTIVE