我有一个注入我的控制器的服务。该服务定义了许多功能。
现在我想向该服务添加一个变量,该变量将在应用程序中保存selectedItem。我这样做了:
angular.module('myservices', []).
factory('serviceA', function () {
var serviceA= {
selectedItem: selectedItem,
... more functions here
};
return serviceA;
var selectedItem;
... functions go here
});
在我的一个控制器中,我设置了所选项目:
serviceA.selectedItem = someItem;
并在另一个控制器中,视图引用所选项目,如下所示:
<span>{{serviceA.selectedItem.value}}</span>
即使正确设置selectedItem,也不会更新范围。我究竟做错了什么 ?
答案 0 :(得分:7)
答案 1 :(得分:1)
angular.module('myservices', []).factory('serviceA', function () {
return {
////工厂返回一个对象
var serviceA= {
selectedItem: selectedItem,
... more functions here
};
return serviceA;
var selectedItem;
... functions go here
}
});
这有用吗?你错过了返回{}部分,一切都在那里。如果您要使用服务,您只需写一下.serviceA = {...}
并且您在控制器中的代码缺少$ scope!
$scope.someItem= serviceA.selectedItem;
或(我真的不知道你想要什么)$scope.serviceA.selectedItem= someItem;
然后在你的范围内
<span>{{someItem.value}}</span>
或(我真的不知道你想要什么)<span>{{serviceA.selectedItem.value}}</span>
PS我不喜欢您的控制器名称与对象的相同 - serviceA;
答案 2 :(得分:0)
做:
<span>{{serviceA.selectedItem.value}}</span>
视图中的不起作用,因为虽然serviceA被注入到视图的控制器中,但我没有将它分配给范围......所以正确的方法是在控制器中执行此操作:< / p>
angular.module('controllers').controller('someCtrl',
['$scope', 'directDebitService', function ($scope, serviceA) {
$scope.serviceA= serviceA;
}]);
现在工作正常。