Ich versuche, einen Controller und eine Vorlage in meinem UI-Router router.js Datei zu laden, aber habe Schwierigkeiten mit der Vorlage.Lazy laden Vorlage und Controller in eckigen UI-Router
Der Controller wird ordnungsgemäß geladen, aber nachdem das geladen ist, müssen wir die Vorlage laden und das ist, wo die Dinge schief gehen.
Nachdem ocLazyLoad den Controller geladen hat, lösen wir ein Angular-Verspre- chen auf, das auch im templateProvider enthalten ist. Das Problem besteht darin, das Versprechen (templateDeferred.promise) nicht zurückzugeben, nachdem die Datei geladen wurde. Das Versprechen wird als Objekt zurückgegeben.
.state('log_in', {
url: '/log-in',
controller: 'controllerJsFile',
templateProvider: function($q, $http) {
var templateDeferred = $q.defer();
lazyDeferred.promise.then(function(templateUrl) {
$http.get(templateUrl)
.success(function(data, status, headers, config) {
templateDeferred.resolve(data);
}).
error(function(data, status, headers, config) {
templateDeferred.resolve(data);
});
});
return templateDeferred.promise;
},
resolve: {
load: function($templateCache, $ocLazyLoad, $q) {
lazyDeferred = $q.defer();
var lazyLoader = $ocLazyLoad.load ({
files: ['src/controllerJsFile']
}).then(function() {
return lazyDeferred.resolve('src/htmlTemplateFile');
});
return lazyLoader;
}
},
data: {
public: true
}
})
Es gibt eine sehr detaillierte Antwort http://stackoverflow.com/a/27754025/1679310, wie ** RequireJs **, ** UI-Router ** zu verwenden und alle Lade-Sachen träge machen. Vielleicht könnte hier andere interseting Weg gefunden werden http://stackoverflow.com/q/27465289/1679310 –
Radim, ich versuche, die Vorlage aus einer HTML-Datei statt nur inline zu laden. – Rjdlee
Hier ist ein weiteres Beispiel für die Verwendung von oclazyload http://www.syntaxsuccess.com/viewarticle/55484016883215ac604c68c3 – TGH