例如,此服务:
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>
我的问题是:可以吗?还是应该避免这样做?
最佳答案
确保这个概念是可以的,并且省去了许多不同的范围变量
您可以做的另一种方法是
angular.extend($scope, ElementsService );
然后,在视图中,您可以立即访问工厂返回的相同数据和方法
<button ng-click="setCurrentElement(someObj)">test</button>