例如这项服务:
services.factory('ElementsService', function () {
var currentElement = 'default element';
var service = {
getCurrentElement: function () {
return currentElement;
},
setCurrentElement: function (elmnt) {
currentElement = elmnt;
}
}
return service;
我经常发现从控制器执行以下操作非常有用:
controllers.controller('ElementsCtrl', function($scope, ElementsService) {
$scope.elementsService = ElementsService;
});
能够绑定html中的服务变量,并且如果某些其他控制器或服务更改了变量,则保持最新状态。像这样:
<p>The current element is : {{elementsService.getCurrentElement()}}</p>
我的问题是:这样可以,还是应该避免这样做?
答案 0 :(得分:4)
当然这个概念没问题,省去了必须制作许多不同的范围变量
另一种方法是
angular.extend($scope, ElementsService );
然后在视图中,您可以立即访问从工厂返回的相同数据和方法
<button ng-click="setCurrentElement(someObj)">test</button>