要在controllers
之间共享数据,大多数Stack溢出答案建议使用services
。大多数情况下,当我在controllers
之间共享数据时,它是我的应用程序模型(Data),并且根据应用程序逻辑在每个controller
中进行更改。那么,它应该不是angular value
而不是angular service
吗?
例如,请执行以下service
,
app.factory('Employee',function($http){
function Employee(){
this.data = {};
}
Employee.prototype.load = function(){
//XHR call which invokes employee details and assigns it here
$http.get(url).then(
function(response){
this.data = response.data;
}
);
}
return new Employee();
});
有了这项服务,我inject
Employee
ui-router
期间无法resolve
services
模型config
无法注入value
块)。但如果我使用stateRouting
创建相同内容,我可以在value
期间注入它。您能否告诉我为什么controllers
不希望在service
setContentView(R.layout.activity_main);
之间创建模型/共享数据?
答案 0 :(得分:2)
首先,也不能将值注入配置块。但这是无关紧要的,因为在配置阶段不会调用resolve函数,而是在运行时,每次导航到封闭路径时都会调用。
根本无法注入价值观,所以在定义价值时,我真的不知道如何访问$ http。
最后,您可以在解析函数中访问您的服务,只需将其注入函数:
resolve: {
employee: function(Employee) {
return Employee.load();
}
}
但这没有多大意义,因为你的load()方法没有返回任何东西。它应该做的是返回员工的承诺:
Employee.prototype.load = function(){
return $http.get(url).then(
function(response) {
return response.data;
}
);
};
但这与控制器之间共享数据无关。它允许做的是等待员工数据可用并在切换到员工视图之前将其注入控制器。