0
を定義していない: sideCtrl & P1 =ではない%20aNaNunction%2C%20got%20undefinedrequirejs angularjsコントローラ私は動的にコントローラをロードしようとすると、私は次のエラー抱えている
が、Page1のために、コードの作品良い。ここ は私のコードは次のとおりです。
main.js:
require.config({
paths: {
jquery: ['//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min', 'lib/jquery/jquery_2.0.0.min.js'],
angular: ['//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min', 'lib/angular/angular_1.2.16.min'],
angularRoute: ['//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-route.min', 'lib/angular-route/angular-route_1.2.16.min']
},
shim: {
'angular' : {'exports' : 'angular'},
'angularRoute': ['angular']
},
deps: ['app']
});
config.jsの:
define([],function(){
function config($routeProvider) {
$routeProvider
.when('/page1', {
templateUrl: 'templates/page1.html',
controller: 'mainCtrl'
})
.when('/page2', {
templateUrl: 'templates/page2.html',
resolve: {
load: function($q, $route, $rootScope) {
var deferred = $q.defer();
var dependencies = [
'sideCtrl.js'
];
require(dependencies, function() {
$rootScope.$apply(function() {
deferred.resolve();
});
});
return deferred.promise;
}
}
})
.otherwise({redirectTo: '/page1'});
}
config.$inject=['$routeProvider'];
return config;
});
app.js
/*global require*/
'use strict';
define([
'angular','angularRoute', 'mainCtrl', 'config'
], function (angular, angularRoute,mainCtrl,config) {
var app = angular.module('app', ['ngRoute']);
app.config(config);
app.controller('mainCtrl', mainCtrl);
angular.bootstrap(document, ['app']);
return app;
});
sideCtrl.js:
"use strict";
define(['app'], function (app) {
app.controller('sideCtrl', ['$scope',
function ($scope) {
console.log("hello world");
$scope.names="krish";
console.log("sideCtrl calling");
}
]);
console.log(app);
return app;
});
動的ため、あなたは何をする必要があるか、定期的に「app.controller」を使用してそれを登録することはできません、現在アクティブなプロバイダーを使用して登録する必要がありますコントローラを追加
page2.html
<div ng-controller="sideCtrl">
asdasdas
{{names}}
</div>
私は、これは誤りであることを行う場合:$ controllerProviderは、あなたが最初にそれを注入する必要が – krish
に定義されていませんか?私はこれを私の設定 'app.provider( 'resolver'、['$ controllerProvider'、 '$ compileProvider'、 '$ filterProvider'、 '$ provide'、 function($ controllerProvider、$ compileProvider、$ filterProvider、$提供){ angular.register = { コントローラ:$ controllerProvider.register、 ディレクティブ:$ compileProvider.directive、 フィルタ:$ filterProvider.register、 工場:$のprovide.factory、 サービス:$のprovide.service、 定数:$ provide.constant };}]) ' – johnjerrico
いいえ、$ controllerProviderの代わりにapp.controllerProviderを使ってくれました。どうもありがとう。 – krish