我有一些功能在不同的控制器中使用,而不是多次复制粘贴到控制器中,我想把它拉出来放在工厂里。
但是,当我尝试通过 Angular 在 HTML 中调用该函数时,{{expressions}}
它不起作用。
相反,我在每个控制器的 $scope 中创建了调用工厂函数的函数,以便 DOM 可以读取表达式——但这似乎是多余的。有没有办法解决这个问题,所以我可以简单地从工厂调用函数?
这是我最初尝试过的:
索引.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
}])
工厂.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);
};
我可以解决这个问题,这样我就不必在 $scope 内调用函数了吗?谢谢。