我正在尝试访问我在AngularJS中注入控制器的工厂内的嵌套函数,但只是得到'函数未定义'错误。我认为控制器甚至无法访问内部功能。为什么? 这甚至是合法的JavaScript吗?
服务
(function () {
'use strict';
angular
.module('myModule', [])
.factory('myFactory', myFactory);
function myFactory() {
var outerVar = 0;
function foobar() {
var innerVar;
function foo() {
innerVar = outerVar++;
console.log(innerVar);
}
function bar() {
innerVar = outerVar--;
console.log(innerVar);
}
return {
foo: foo,
bar: bar
}
}
return {
foobar: foobar
}
}
}());
控制器
(function () {
'use strict';
angular
.module('myModule')
.controller('myController', myController);
function myController(myFactory) {
myFactory.foobar.foo();
}
}());
答案 0 :(得分:1)
试试吧:
myFactory.foobar().foo();
myFactory.foobar().bar();
这是打算使用它的方式。
答案 1 :(得分:1)
你必须调用foobar函数,然后它将返回所需的对象
(function () {
'use strict';
angular
.module('myModule')
.controller('myController', myController);
function myController(myFactory) {
myFactory.foobar().foo();
}
}());