1

我試圖在數據模型發生變化時立即進行角度刷新。我有數據存儲對象是一個相當複雜的模型,但最終應該提供必須渲染到屏幕的數據的角度。我無法弄清楚的是如何通知角度,事情是不同的。通知變化的角度

我想我還沒有完全理解我應該如何使用$ scope,但我不能讓我的生活得到正確的工作。如果這是一個微不足道的問題,我很抱歉。

<html ng-app="testApp"> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
     <script> 
      function Store() { 
       this.data = [{ msg: "a" }, { msg: "b" }]; 

       this.performWeirdModifications = function() { 
        data.push({ msg: "c" }); 
        data.push({ msg: "d" }); 
       } 
      } 

      var store = new Store(); 

      angular.module('testApp', []).controller('DataController', function() { 
       this.data = store.data; 
      });    
     </script> 
    </head> 
    <body ng-controller="DataController as dataCtrl"> 
     <button onclick="store.performWeirdModifications()">Simulate something</button> 
     <div ng-repeat="data in dataCtrl.data">{{data.msg}}</div> 
    </body> 
</html> 
+0

,而你可以使用$範圍。$適用於解決問題,什麼我沒有得到的,你爲什麼不使用存儲作爲服務......這是更加棱角分明的方式... – harishr 2014-10-09 12:22:26

+0

問題是這裏的商店實際上是判斷一堆遺留代碼的東西,這些代碼有很多東西。否則,你會從頭開始將它構建成角度。 – 2014-10-09 13:07:16

回答

2

將其添加到$scope

angular.module('testApp', []).controller('DataController', function ($scope) { 
     $scope.data = store.data; 
    }); 

以下是我將如何使用服務完成它。

<html ng-app="testApp"> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
     <script> 

      angular.module('testApp', []) 
      .service('Store', function() { 
       this.data = [{ msg: "a" }, { msg: "b" }]; 

       this.performWeirdModifications = function() { 
        this.data.push({ msg: "c" }); 
        this.data.push({ msg: "d" }); 
       }; 
       return this; 
      }) 
      .controller('DataController', function ($scope, Store) { 
       $scope.data = Store.data; 
       $scope.getData = function() { 
        Store.performWeirdModifications(); 
        $scope.data = Store.data; 
       }; 
      });    
     </script> 
    </head> 
    <body ng-controller="DataController as dataCtrl"> 
     <button ng-click="getData()">Simulate something</button> 
     <div ng-repeat="d in data">{{d.msg}}</div> 
    </body> 
</html> 
+0

啊,就是我在找的東西。非常感謝! – 2014-10-09 13:09:43