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']);
});
});
app中定义模块与路由
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代码如下
define(['app'], function (yceMain){
yceMain.controller('appManage', ['$scope' , function ($scope){
$scope.aa = 11;
}]);
});
页面报错
Error: [ng:areq] http://errors.angularjs.org/1.5.0/ng/areq?p0=appManage&p1=not%20aNaNunction%2C%20got%20undefined
若在app.js中定义appManage controller,则视图中可以拿到数据,但如果在appManage controller.js 使用define(['app'],xx) 获取angular.module则取不到,求解。
으아악
이 앱은 삽입되어서는 안 됩니다. console.log(yceMain)를 사용하세요.
으아악appManage 컨트롤러를 앱 모듈에 바인딩하려면 다음과 같이 작성할 수 있어야 합니다.
물론, 이 컨트롤러도 페이지에 소개되어야 합니다
UI-Router + OCLAZYLOAD를 사용했어요
문제는 각도가 ng-app 서비스를 시작하기 전에 모든 컨트롤러와 서비스를 등록해야 한다는 것입니다.
으아악하지만 내 생각은 require를 통해 컨트롤러를 비동기적으로 로드하는 것입니다.
이 기능은 문제를 완벽하게 해결합니다. /a/11… 감사합니다.