我有幾個功能在不同的控制器中使用,而不是複製並粘貼多次到控制器,我想把它拉出並放在工廠。依賴注入功能與工廠(AngularJS)
但是,當我嘗試通過Angular {{expressions}}
調用HTML中的函數時,它不起作用。
相反,我在每個控制器的$範圍內調用了工廠函數,所以DOM可以讀取表達式 - 但這似乎是多餘的。有沒有辦法解決這個問題,所以我可以簡單地調用工廠的函數?
這裏是我最初曾嘗試:
的index.html:
<div ng-controller="MyController">
The rating of this item is: {{MakeGraph.getRating(whichItem)}}<br />
The votes of this item is: {{MakeGraph.getVotes(whichItem)}}
</div>
MyController.js:
controllers.controller('MyController', ['$scope', 'MakeGraph', '$routeParams', function($scope, MakeGraph, $routeParams){
$scope.whichItem = $routeParams.itemId;
//no other reference to MakeGraph here
}])
factory.js:
app.factory('MakeGraph', function(){
var service = {};
service.getRating = function(itemNo){
...
return ...;
};
service.getVotes = function(itemNo){
...
return ...;
};
return service;
});
相反,我只能得到它的工作時,我改變對myController的有這樣的事情:
$scope.getRating = function(){
return MakeGraph.getRating(itemNo);
};
我能解決這個問題,所以我不必調用$範圍內的功能?謝謝。
一個快速的方法是angular.extend($ scope,MyService) – Whisher