2015-05-04 38 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

相關問題