In this plunk Ich habe einen Beispielcode mit Angular + Angular UI Router + RequireJS. Es gibt zwei Seiten mit jeweils einem entsprechenden Controller. Wenn Sie auf Ansicht 1 klicken, sollten Sie eine Seite sehen, die eine Direktive enthält.Controller und Direktiven in Angular + RequireJS
Wenn die Seite geladen wird es die folgende Ausnahme ausgelöst:
Kann nicht Eigentum 'Controller' undefinierter an bei my-ctrl-1.js lesen: 3
was bedeutet, dass app
undefiniert in my-ctrl-1.js
, obwohl ich es in app.js
zurückgeben. Was ist mit diesem Code falsch?
HTML
<ul class="menu">
<li><a href ui-sref="view1">View 1</a></li>
<li><a href ui-sref="view2">View 2</a></li>
</ul>
<div ui-view></div>
main.js
require.config({
paths: {
'domReady': 'https://cdnjs.cloudflare.com/ajax/libs/require-domReady/2.0.1/domReady',
'angular': 'https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min',
"uiRouter": "https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router"
},
shim: {
'angular': {
exports: 'angular'
},
'uiRouter':{
deps: ['angular']
}
},
deps: [
'start'
]
});
start.js
define([
'require',
'angular',
'app',
'routes'
], function (require, angular) {
'use strict';
require(['domReady!'], function (document) {
angular.bootstrap(document, ['app']);
});
});
app.js
define([
'angular',
'uiRouter',
'my-ctrl-1',
'my-ctrl-2',
'my-dir-1'
], function (angular) {
'use strict';
console.log("app loaded");
return angular.module('app', ['ui.router']);
});
my-ctrl-1.js
define(['app'], function (app) {
'use strict';
app.controller('MyCtrl1', function ($scope) {
$scope.hello = "Hello1: ";
});
});
danke für die Info. Ich habe viele Controller in meiner Anwendung und ich müsste sie alle in app.js auflisten, sollte ich die zirkuläre Abhängigkeit nicht aufheben, indem ich "my-ctrl-1" von "app.js" entferne und zu "routes" hinzufüge .js'? – ps0604
Mit dem Code, den Sie derzeit haben, sieht es so aus, als ob es funktionieren sollte. Es gibt viele Möglichkeiten, das Problem zu lösen. Einige sind möglicherweise bequemer als andere. – Louis
Danke, es funktionierte das Hinzufügen der Abhängigkeiten in route.js. Dies ist der Arbeitscode http://plnr.co/edit/WEi65QQKL4ec3x88qTKj?p=preview – ps0604