Próbuję użyć kombinacji AngularJS i RequireJS. Chciałbym skorzystać z usługi $routeProvider
i uniknąć konieczności ładowania wszystkich kontrolerów dla moich widoków dotyczących uruchamiania aplikacji. Do tego, próbowałem następujące:Używanie kontrolerów routingu i ładowania AngularJS na żądanie przy użyciu requirejs
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();
})
}})
}]);
});
Niestety, to nie dla mnie. Nie ma błędów. Plik JS zawierający kontroler jest ładowany poprawnie, ale nie widzę powiązanej wartości danych w renderowanym widoku. Zastanawiam się, czy mogę przypisać wartość controller
w jakiś inny sposób, który będzie czekać na wywołanie asynchroniczne (załadować plik JS), aby zakończyć.
Wszelkie pomysły?
Jedynym sposobem na zrobienie tego jest uzyskanie kontrolera $ controllerProvider. Mam działające rozwiązanie tutaj: https://github.com/matys84pl/angularjs-requirejs-lazy-controllers – matys84pl
@ matys84pl, który faktycznie jest zgodny z tym, co zamierzałem zrobić. Dziękuję za udostępnienie tego. Jedną rzeczą, że przejrzałem kod i zobaczyłem, że ładujesz szablony za pomocą wtyczki Wymagaj tekstu, czy jest to jedyny obsługiwany sposób ładowania szablonów za pomocą biblioteki? Co się stanie, jeśli chcę załadować szablon z adresu URL na serwerze? – Kassem
To zależy, czy adres URL jest związany z Twoją aplikacją. Innymi słowy, czy jest on w tej samej domenie? Jeśli nie, to myślę, że do tego celu musiałbyś użyć jakiegoś proxy (aby załadować pliki z innej domeny). – matys84pl