我正在尝试编写一个工厂并在我的一个控制器中使用它,但它给了我一个错误:
TypeError:wordsToTrain不是函数
我让我的控制器和工厂非常简单,但仍然不明白为什么会发生这种情况:
angular.module('bananaApp')
.controller('TrainingCtrl', [ '$scope', 'wordsToTrain', function ($scope, wordsToTrain) {
wordsToTrain();
}]);
angular.module('bananaApp')
.factory('wordsToTrain', function () {
return 3;
});
答案 0 :(得分:1)
尝试定义您的服务:
angular.module('bananaApp')
.factory('wordsToTrain', function () {
var wordsToTrain = {};
wordsToTrain.getValue = function() {
return 3;
}
return wordsToTrain;
});
并像这样使用它:
var value=wordsToTrain.getValue();
答案 1 :(得分:1)
您正在尝试实例化一个值。您的工厂不会返回它返回值的函数。
angular.module('bananaApp')
.controller('TrainingCtrl', [ '$scope', 'wordsToTrain', function ($scope, wordsToTrain) {
console.log(wordsToTrain) //this would give you 3 not a function;
}]);
angular.module('bananaApp')
.factory('wordsToTrain', function () {
return 3;
});
//返回一个函数
angular.module('bananaApp')
.controller('TrainingCtrl', [ '$scope', 'wordsToTrain', function ($scope, wordsToTrain) {
console.log(wordsToTrain()) // this would give you 3 as well but this is a function;
}]);
angular.module('bananaApp')
.factory('wordsToTrain', function () {
return function() {
return 3;
});
答案 2 :(得分:0)
Factor
会返回一个对象&您可以将方法附加到此工厂函数。
在angular.module中注释[]
旁边。
模块定义中的[]参数可用于定义依赖模块。如果没有[]
参数,则不会创建新模块,而是检索现有模块。
angular.module('bananaApp',[])
.controller('TrainingCtrl', [ '$scope', 'wordsToTrain',
function ($scope, wordsToTrain) {
console.log(wordsToTrain.three());
}]);
angular.module('bananaApp').factory('wordsToTrain', function () {
var _factory ={};
_factory.three = function(){
return 3;
}
return _factory;
});
Demo此处