Ich versuche AngularJS und RequireJS in Kombination zu verwenden. Ich möchte den Service $routeProvider
verwenden und vermeiden, dass alle Controller für meine Ansichten beim Start der Anwendung geladen werden müssen. Dafür habe ich folgendes versucht:Verwenden von AngularJS Routing und Laden von Controllern bei Bedarf mit requirjs
define(['require', 'angular', 'appModule'], function (require, angular, app) {
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
require(['sitesController'], function(SitesController) {
return new SitesController();
})
}})
}]);
});
Leider hat das bei mir nicht funktioniert. Es gibt keine Fehler. Die JS-Datei, die den Controller enthält, wird ordnungsgemäß geladen, aber ich kann den Datengebundenen Wert in der gerenderten Ansicht nicht sehen. Ich habe mich gefragt, ob ich den Wert von controller
auf eine andere Weise zuweisen könnte, die auf den asynchronen Aufruf (um die JS-Datei zu laden) warten würde.
Irgendwelche Ideen?
Der einzige Weg, dies zu tun ist, $ ControllerProvider zu bekommen. Ich habe eine funktionierende Lösung hier: https://github.com/matys84pl/angularjs-requirejs-lazy-controllers – matys84pl
@ Matys84pl das ist eigentlich entlang der Linien von dem, was ich dachte, zu tun. Danke für das Teilen. Eine Sache jedoch, ging ich durch den Code und sah, dass Sie Vorlagen mit dem Require Text-Plugin laden, ist das die einzige unterstützte Möglichkeit zum Laden von Vorlagen mit Ihrer Bibliothek? Was, wenn ich die Vorlage von einer URL auf dem Server laden möchte, würde das funktionieren? – Kassem
Es hängt davon ab, ob die URL relativ zu Ihrer App ist .. mit anderen Worten, ist es auf der gleichen Domain? Wenn nicht, dann denke ich, dass Sie eine Art Proxy verwenden müssen, um das zu erreichen (um Dateien von einer anderen Domain zu laden). – matys84pl