2015-05-04 37 views
4

比如这项服务:将整个服务绑定到控制器作用域可以吗?

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> 

我的问题是:这是好的还是应该避免这样做?

回答

4

当然这个概念是OK,节省不得不作出一些不同范围的变量

另一种方式,你可以做到这一点是

angular.extend($scope, ElementsService); 

然后在视图中,您立即可以访问相同的数据的和方法从工厂返回

<button ng-click="setCurrentElement(someObj)">test</button> 
+0

谢谢,你会建议哪种方式?我想我们可能会在多个服务上使用angular.extend()来面对一些命名冲突。 – TrtG

+0

好吧,如果这是你的方法的情况下 – charlietfl

相关问题