У меня проблема при попытке myFactory
в myDirective
. Мне нужен myfactory.myMethod
для получения динамического templateUrl
myfactory.myMethod
на основе определенного события.
Это то, что я пытаюсь сейчас:
(function () {
'use strict';
angular
.module('myApp')
.directive('myDirective', ['myFactory', function (myFactory) {
var directive = {
restrict: 'E',
templateUrl : function(myFactory){
if(myFactory.myMethod()){
return '/app/hello.html'
}
return '/app/world.html'
},
controller : 'MyController',
controllerAs : 'myCtrl',
bindToController : true
};
return directive;
}]);
})();
Я получаю следующую ошибку
myFactory.myMethod не является функцией
Я пробовал смотреть на различные решения также на SO, но я не смог найти правильный.
myFactory
- простая фабрика
(function () {
'use strict';
angular
.module('myApp')
.service('myFactory', function () {
function myMethod() {
. . .
}
//Or
var myMethod = function(){
. . .
}
return {
myMethod: myMethod
}
});
})();
Как я могу это исправить?
Заранее спасибо.
Я думаю, что я нашел вашу ошибку, то есть вы передали службу как параметр в функции, возвращающий шаблон url templateUrl: function(myFactory){}
. Это совершенно неправильно, вы не можете использовать его в качестве параметра.
Чтобы исправить это, вам нужно удалить параметр myFactory
в установленной функции templateUrl, например:
templateUrl : function(){
if(myFactory.myMethod()){
return '/app/hello.html'
}
return '/app/world.html'
}
И я вижу, что в вашем коде отсутствует создающий модуль: angular.module('myApp', []);
Попробуйте себя в CodePen.
Надеюсь, поможет ;)
myFactory
.