[英]Angularjs - Getter and Setter and databinding multiple controllers
我似乎無法通過服務掌握這種數據綁定控制器的方法。 閱讀此網站上的帖子,由於開銷,人們似乎建議遠離$ watch。 所以我看到很多人都在使用諾言,但似乎無法使最初的獲取數據發揮作用。
我的Signle頁面應用程序在2個單獨的控制器上具有2個表,而第三個控制器具有用於編輯數據的表格。 我有一個簡單的提交按鈕,它將設置新數據,然后在所有控制器之間重新同步。 這是我到目前為止所得到的:
第一控制人
GDI_App.controller('first_Controller', function ($scope, Service) {
Service.get_data();
$scope.Current.incidents = Service.current_data(); //returns $$State;
});
第二控制器
GDI_App.controller('second_Controller', function ($scope, Service) {
Service.get_data();
$scope.Current.incidents = Service.current_data(); //returns $$State;
});
第三個設置提交數據的控制器
GDI_App.controller('third_Controller', function ($scope, Service) {
$scope.submit = Service.set_data(data);
});
服務
GDI_App.factory('Service', function($q) {
var Current ={}
Current.Data = [
{ "Data1": "123123", "Data2": "15437" },
{ "Data1": "432234", "Data2": "146" },
{ "Data1": "45654", "Data2": "3534" },
{ "Data1": "76587", "Data2": "78978" },
{ "Data1": "2342", "Data2": "5345878" },
{ "Data1": "178", "Data2": "34534" },
{ "Data1": "173838", "Data2": "354534" },
];
return{
get_data: function(){
return $q.when(Fake_Data)
.then(function(data) {
return data;
});
}
set_data: function(data){
Current.Data = data;
}
}
});
有人知道我會想念什么嗎?
對於要更新而不必從服務中顯式獲取數據的控制器,我建議您使用一個單獨的函數,該函數從設置器設置的服務中獲取“緩存”值。
現在,您已經綁定到提取,因此基本上在每個摘要上(如果使用了該調用),如果直接將其鏈接到函數,則它將繼續獲取該承諾。 因此,取而代之的是-使用getter並對控制器中的作用域模型進行調用的別名。
有了它,它只會在控制器負載上獲取它,除非您使用了手表,否則不知道何時更新/獲取該模型。
$scope.display = Service.get;
在視圖中,只需執行
<div ng-repeat="mystuff in display()"></div>
因此,一旦通過其他任何服務更新了該值,它將在下一個摘要中進行更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.