2014-08-29 75 views
0

我想澄清一下與AngularJS的數據綁定。 我希望有一個服務陣列並與多個控制器共享。服務和控制器之間的AngularJS數據綁定

我想,當一個控制器修改服務中的數據,修改是考慮到其他控制器和他們的HTML模板自動更新。

不幸的是,我成功了一點點,但不能與成角度的方式,因爲我用這個觀察者模式或angular.copy ..

當我用純角的方式嘗試,這是行不通的。

這裏的代碼的示例:

包含DATAS到共享

app.factory("MyService", [ 
function() { 

    myTableToShare = []; 

    return { 

     myTableToShared : myTableToShare, 
    }; 
} 
服務

]);

該修改服務的數據控制器

app.controller('AddCtrl', [ 
    '$scope', 'MyService', function ($scope, MyService) { 

     $scope.myService = MyService; 

     $scope.addElementToSharedTable = function(element) { 

      $scope.myService.myTableToShare.push(element); 

     }; 
    }]); 

允許打印表的DATAS到模板

app.controller('ReadCtrl', [ 
    '$scope', 'MyService', function ($scope, MyService) { 

     $scope.myService = MyService; 
    }]); 

**的打印表的元素*模板控制器*

<div ng-controller="ReadCtrl"> 
    <ul > 
     <li ng-repeat="element in myService.myTableToShare"> 
      <span>{{element.id}} - {{element.name}}</span> 
     </li> 
    </ul> </div> 

我已經應用這種方法感謝differents HOWTO。不幸的是這些HOWTO沒有使用數組對象,而是一個String。這是一條路嗎?

在等待我應用模式觀察員等我通知事件從控制器到服務,但在我看來,它不是一個很好的解決方案,因爲它太冗長。

Thaks

+0

你有沒有注意到類型:'myTableToShared:myTableToShare'?你可以設置一個plunkr或jsfiddle嗎? – apairet 2014-08-29 17:12:37

回答

0

使用app.value(...),如果控制器是在相同的模塊 '應用程序'。

相關問題