我似乎无法通过服务掌握这种数据绑定控制器的方法。在这个网站上阅读帖子,人们似乎建议远离$ watch因为开销。所以我看到很多人使用promises,但似乎无法获得最初的get数据。
My 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;
}
}
});
有谁知道我会失踪什么?
答案 0 :(得分:0)
对于您想要更新的控制器而不必明确地从服务中获取数据,我建议使用一个单独的函数来获取“缓存”。来自setter设置的服务的值。
现在你已经绑定了fetch,所以基本上在每个摘要上(如果你使用了那个调用),如果你把它直接链接到函数,它只会继续反馈这个承诺。因此,使用getter并将调用别名调用到控制器中的作用域模型。
你拥有它的方式,它只能在控制器负载上得到它,并且除非你使用手表,否则不知道何时更新/获取该模型。
$scope.display = Service.get;
在视图中,只需执行
<div ng-repeat="mystuff in display()"></div>
因此,一旦该值被其他任何服务更新,它只会在下一个摘要中更新。