Rumah > Soal Jawab > teks badan
Item konfigurasi ditakrifkan dalam main.js
requirejs.config({
paths: {
jQuery: '../lib/jquery.min',
angular: '../lib/angular.min',
angularRouter: '../lib/angular-route.min',
angularAnimate: '../lib/angular-animate.min',
ngNotify: '../lib/angular-atomic-notify',
api: '../js/common/api',
utils: '../js/common/utils'
},
shim: {
'angular': {
deps: ['jQuery'],
exports: 'angular'
},
angularRouter: {
deps: ['angular'],
exports: 'ngRoute'
},
angularAnimate: {
deps: ['angular']
},
ngNotify: {
deps: ['angular']
},
api: {
deps: ['angular']
},
utils: {
deps: ['angular']
}
}
});
// 手动开启angular服务
require(['angular', 'app'], function(angular){
angular.element(document).ready(function(){
angular.bootstrap(document, ['yceMain']);
});
});
Tentukan modul dan laluan dalam apl
app.js
define(['angular', 'angularRouter', 'ngNotify', 'angularAnimate', 'api', 'utils'], function(angular){
var yceMain = angular.module('yceMain',['ngRoute', 'atomic-notify', 'ngAnimate']);
yceMain.config(['$routeProvider', '$controllerProvider', function ($routeProvider, $controllerProvider){
$routeProvider
.when('/dashBoard', {
templateUrl: 'views/dashBoard.html'
})
.when('/appManage', {
templateUrl: 'views/appManage.html',
controller: 'appManage'
})
}]);
return yceMain;
});
appManage controller.js kod adalah seperti berikut
define(['app'], function (yceMain){
yceMain.controller('appManage', ['$scope' , function ($scope){
$scope.aa = 11;
}]);
});
Ralat halaman
Error: [ng:areq] http://errors.angularjs.org/1.5.0/ng/areq?p0=appManage&p1=not%20aNaNunction%2C%20got%20undefined
Jika anda mentakrifkan pengawal appManage dalam app.js, anda boleh mendapatkan data dalam paparan, tetapi jika anda menggunakan define(['app'],xx) dalam appManage controller.js untuk mendapatkan angular.module, anda tidak boleh mendapatkan itu. Tolong selesaikan.
我想大声告诉你2017-05-15 17:10:36
define(['app'], function (yceMain){
yceMain.controller('appManage', ['$scope' , function ($scope){
$scope.aa = 11;
}]);
});
Apl ini sepatutnya tidak disuntik. Sila console.log(yceMain).
Jika anda hanya mahu mengikat pengawal appManage ke modul aplikasi, anda sepatutnya boleh menulis seperti ini:
// appManage controller.js
angular.module('app')
.controller('appManage', ['$scope' , function ($scope){
$scope.aa = 11;
}]);
Sudah tentu, pengawal ini juga mesti diperkenalkan ke dalam halaman
Saya menggunakan ui-router + oclazyload
某草草2017-05-15 17:10:36
Selesai. Masalahnya ialah sebelum sudut memulakan perkhidmatan ng-app, semua pengawal dan perkhidmatan mesti didaftarkan.
Tetapi idea saya adalah untuk memuatkan pengawal secara tidak segerak melalui memerlukan.
function ctrlRegister (ctrlName, ctrlModule) {
return function ($q) {
var defer = $q.defer();
require(ctrlModule, function (controller) {
$controllerProvider.register(ctrlName, controller);
defer.resolve();
});
return defer.promise;
}
}
Fungsi ini menyelesaikan masalah dengan sempurna, terima kasih /a/11….