Я хочу, чтобы загрузить контроллеры так:регистр lazyloaded контроллер angularjs
.state({
name: 'app.search',
url: 'search?q&opts',
templateUrl: '/templates/search.html',
controller: 'SearchCtrl',
resolve: {
deps: function($util){
return $util.load(['/ctrl/SearchCtrl.js']);
}
}
})
нагрузок контроллера, но я получаю следующее сообщение об ошибке, что приводит меня к мысли о том, что контроллер не был зарегистрирован:
Argument 'SearchCtrl' is not aNaNunction, got undefined
Так что мой вопрос в том, как бы я начал регистрировать контроллер при ленивой загрузке, как показано.
контроллер определяется как:
app.module('app').controller('SearchCtrl',function(){
});
Что я могу сделать, чтобы заставить контроллер должен быть зарегистрирован?
EDIT ПРИЛОЖЕНИЕ УСТАНАВЛИВАЕТСЯ И ВСЕ РАБОТЫ ИСКУССТВО. ЭТО ВОПРОС ОКАЗЫВАЕТ ТОЛЬКО ЛАЗИРОВАНИЕ.
Проблема точно такая же, как определено, контроллер не зарегистрирован, поскольку процесс начальной загрузки уже запущен. Я ищу способ зарегистрировать контроллер, когда он lazyloaded.
мой погрузчик функция ($util.load()
выглядит так:
load: function(){
if(arguments.length > 1){
var items = arguments;
}else{
var items = arguments[0];
}
var _self = this;
return $q(function(resolve,reject){
if(items.length == 0){
return resolve();
}
_self.async(items, function(item,next){
if(item.indexOf('.js') != -1){
_self.loadOne('script',item,next,function(err){
next(err);
});
}
else if(item.indexOf('.css') != -1){
_self.loadOne('link',item,next);
}else{
next();
}
},function(errors,results){
$timeout(function() {
$rootScope.$apply();// @Claies suggestion
if(errors){
reject(errors);
}else{
resolve();
}
});
});
});
},
У вас есть модуль, объявленный отдельно? – Sajeetharan
модуль приложения? конечно. это приложение уже построено, но весь код находится в одном файле. я пытаюсь разбить весь код на отдельные файлы и lazyload – r3wt
вам нужно будет использовать '$ rootScope. $ apply()' * после того, как * ваш загрузчик загрузится и выполнит ваш файл контроллера, но * до того, как оно вернется. вы также можете использовать модуль, предназначенный для этой задачи, например oc-lazyLoad. https://oclazyload.readme.io/docs/with-your-router – Claies