我们假设我有一些服务和一些控制器。该服务将返回什么取决于控制器将传递给它的内容。但确实可能吗?我怀疑服务可能如下所示:
var app = angular.module('tApp',[])
.provider('getFileContents', function(param){
this.paramId = param;
this.$get = function(){
var par = this.paramId;
return{
getContents:function(){
return "paramId comes here: "+par;
}
}
}
});
然后我认为我的控制器应该是这样的:
app.controller('test_controlController',
function test_controlController($scope,getFileContents){
$scope.contents = getFileContents.getContents('test_control');
console.dir($scope.contents);
});
......但它不起作用。它说:
Uncaught Error: Unknown provider: param from tApp
那么它可以使它工作吗?
答案 0 :(得分:2)
您正在向服务构造函数添加参数,而不是服务函数。并且您使用的是提供商而不是服务或工厂,您可以在此处获得有关服务/工厂和提供商之间差异的一些信息:
Angular Service VS Provider VS Factory
返回您的代码,进行以下更改:
<强>服务强>
app.service('FileService', function () {
return {
getFileContents : function (fileID) {
//function logic goes here
console.log(fileID);
}
}
});
<强>控制器:强>
app.controller('TestController', function ($scope,getFileContents) {
$scope.contents = getFileContents.getFileContents(123);
});
答案 1 :(得分:1)
在服务中为getContents方法添加参数
return{
getContents:function(foo){
return "paramId comes here: "+ foo;
}
}