访问 angular 工厂中的嵌套函数闭包
Access nested function closures in angular factory
我试图访问一个工厂内的嵌套函数,我在 AngularJS 中将其注入控制器,但只收到 'function is undefined' 错误。我认为控制器甚至无法访问内部功能。为什么?
这甚至是合法的 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();
}
}());
试试吧:
myFactory.foobar().foo();
myFactory.foobar().bar();
这就是它的用途。
你必须调用 foobar 函数,然后它将 return 所需的对象
(function () {
'use strict';
angular
.module('myModule')
.controller('myController', myController);
function myController(myFactory) {
myFactory.foobar().foo();
}
}());
我试图访问一个工厂内的嵌套函数,我在 AngularJS 中将其注入控制器,但只收到 'function is undefined' 错误。我认为控制器甚至无法访问内部功能。为什么? 这甚至是合法的 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();
}
}());
试试吧:
myFactory.foobar().foo();
myFactory.foobar().bar();
这就是它的用途。
你必须调用 foobar 函数,然后它将 return 所需的对象
(function () {
'use strict';
angular
.module('myModule')
.controller('myController', myController);
function myController(myFactory) {
myFactory.foobar().foo();
}
}());