我有几个功能在不同的控制器中使用,而不是复制并粘贴多次到控制器,我想把它拉出并放在工厂。依赖注入功能与工厂(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