Я пытаюсь получить доступ к вложенной функции внутри фабрики, которую я ввел в контроллер в 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();
}
}());
было бы лучше использовать '' обслуживания здесь вместо 'factory'? Возможно, было бы более элегантным ... – uloco
см., Что разница между использованием услуги и фабрикой заключается в том, что если вы используете завод, и когда вы вводите эту фабрику, угловой вызовет заводскую функцию и вернет вам результат, т.е. * * foobar ** объект в этом случае. Однако, если вы используете службу, и вы ее вводите, где вам будет предоставлен новый экземпляр функции i.e ** new myFactory() **. –
Итак, закрытие не будет работать, потому что я получаю новый экземпляр? – uloco