Angularjs 将整个服务绑定到控制器范围可以吗?

Angularjs 将整个服务绑定到控制器范围可以吗?,angularjs,Angularjs,例如,此服务: services.factory('ElementsService', function () { var currentElement = 'default element'; var service = { getCurrentElement: function () { return currentElement; }, setCurrentElement: function (elmnt) { currentEl

例如,此服务:

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>
当前元素是:{{elementsService.getCurrentElement()}


我的问题是:这样做可以吗?还是应该避免这样做?

确保这个概念是可以的,这样就不必制作许多不同的范围变量

另一种方法是

angular.extend($scope, ElementsService );
然后在视图中,您可以立即访问从工厂返回的相同数据和方法

<button ng-click="setCurrentElement(someObj)">test</button>
测试

谢谢,您推荐哪种方式?我认为在多个服务上使用angular.extend()可能会遇到一些命名冲突。如果是这种情况,请使用您的方法