Ich baue ein Adressbuch, um eckig zu lernen und es funktioniert gut, bis ich versuche, den Routenmanager zu verwenden. Das Problem besteht darin, den eckigen Routenmanager über require zu laden. Ich erhalte den folgenden Fehler 'Uncaught object'.AngularJS, requireJS und ngRoute
Es gab Fragen dazu, aber sie wurden vom Benutzer entfernt, und andere Antworten deuten darauf hin, dass die ngRoute-Abhängigkeit in der ng.module-Abhängigkeitsliste nicht enthalten ist oder gar nicht benötigt wird. Ich habe nicht viel Glück, eine Antwort zu finden!
Ich habe das eine HTML-Datei, die eine Datei benötigt Config beinhaltet:
requirejs.config({
paths: {
'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min'],
'angular': ['//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min','angular_1.2.16.min'],
'angular-route': ['//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-route.min','angular-route_1.2.16.min'],
},
shim: {
'jquery': {
exports: 'jquery'
},
'angular': {
exports: 'angular'
},
'angular-route': {
exports: 'ngRoute',
deps: ['angular']
}
},
baseUrl: 'js/lib'
})
require(['modules/ContactsMod'], function() { });
und dies ist die ContactsMod.js Datei am Ende der Konfigurationsdatei mit dem Namen:
define(['jquery', 'angular-route','angular','controllers/ContactsCtrl','routes/ContactsRout'],function($,ngRoute,ng,controller,router) {
// var contactsApp = ng.module('contactsApp', [ngRoute]);
// contactsApp.config(function ($routeProvider, $locationProvider){
// $log.debug("Configuring $routeProvider...");
//
// $locationProvider.html5Mode(true); //?????
//
// $routeProvider
// .when('/', {
// templateUrl : "views/Contacts.html",
// controller : "controller"
// })
// .otherwise({ redirectTo: '/' })
// })
var contactsApp = ng.module('contactsApp', []);
contactsApp.controller(controller);
ng.bootstrap(document, ['contactsApp']);
});
kommentierte out Abschnitt ist der Teil, den ich versuche herauszufinden. Die obige Version funktioniert, aber wenn ich versuche, die ngRoute-Abhängigkeit zum ng.module-Aufruf im auskommentierten Teil hinzuzufügen, bekomme ich den Fehler erwähnt.
Ich kann sehen, dass alle Assets geladen wurden, bevor das Modul aufgerufen wird. Aber ich kann auch sehen, dass die ngRoute sich als undefiniert ausgibt, also macht es Sinn, dass es nicht funktioniert! Ich habe verschiedene Konfigurationsvarianten ausprobiert. Wie die Einbeziehung der Winkelroute als Winkelabhängigkeit (die den gleichen Fehler plus einen anderen von 'Uncaught TypeError: Eigenschaft' Modul 'von' undefined 'nicht lesen kann).
Ich kann sehen, es gibt eine Seed-App, die benutzerdefinierte Async-Lader anstelle von benötigt ... Was empfehlen Sie?
Ich weiß nicht, wie dieses Problem zu debuggen, jede Hilfe oder Zeiger geschätzt!
Ich weiß nicht viel über RequireJS, aber ich bin ziemlich sicher angular.module erwartet ein Array von Zeichenfolgen als seine Abhängigkeiten, z. 'ng.Modul ('contactsApp', ['ngRoute']); ' – ivarni
Danke - Ich habe das korrigiert ... aber der gleiche Fehler wie ich glaube nicht, dass das Modul im Umfang verfügbar ist. – GetafixIT
Hmm, das ist seltsam. Es sollte das ngRoute-Modul genauso laden, wie es eckig lädt, zumindest so, wie man denken würde. – ivarni