例如,此服务:

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>

09-30 15:41