Я пытаюсь работать с угловыми.js, ui-router и require.js и чувствовать себя довольно смущенными. Я попытался выполнить этот урок http://ify.io/lazy-loading-in-angularjs/. Во-первых, позвольте мне показать вам мой код:ленивые загрузки angularjs контроллеры с разрешением ui-router
app.js =>
var app = angular.module('myApp', []);
app.config(function ($stateProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) {
$stateProvider.state('home',
{
templateUrl: 'tmpl/home-template.html',
url: '/',
controller: 'registration'
resolve: {
deps: function ($q, $rootScope) {
var deferred = $q.defer(),
dependencies = ["registration"];
require(dependencies, function() {
$rootScope.$apply(function() {
deferred.resolve();
});
})
return deferred.$promise;
}
}
}
);
app.lazy = {
controller: $controllerProvider.register,
directive: $compileProvider.directive,
filter: $filterProvider.register,
factory: $provide.factory,
service: $provide.service
};
});
Теперь в моих registration.js я следующий код:
define(["app"], function (app) {
app.lazy.controller("registration" , ["$scope", function ($scope) {
// The code here never runs
$scope.message = "hello world!";
}]);
});
все работает хорошо, даже код в registration.js запускается. но проблема заключается в том, что код внутри функции контроллера никогда не запускается, и я получаю ошибку Ошибка: [ng: areq] http://errors.angularjs.org/1.2.23/ng/areq?p0=registration&p1=not функция, получившая undefined
Который, кажется, мой код не зарегистрировал функцию контроллера успешно. Есть идеи?
P.s. В ui-router docs говорится: «Если какая-либо из этих зависимостей является обещанием, они будут разрешены и преобразованы в значение до того, как будет создан экземпляр контроллера, и будет запущено событие $ routeChangeSuccess». Но если я положил отложенное. Решает(); из указанного кода внутри timeOut и запустите его, скажем, через 5 секунд, мой код контроллера запускается, и мое представление отображается до разрешения Strange.
не должно быть 'return deferred.promise;' вместо 'return offfer. $ Prom;' в функции разрешения? – sceid