在bootstrap angularjs之后加载控制器

时间:2014-01-10 08:07:35

标签: javascript angularjs requirejs bootstrapping

我使用requirejs和angularjs在我的应用程序中加载模块。 我面临的问题是我不知道如何在角度被引导后加载控制器。这是我的代码:

main.js:

require(['app', //all my scripts go here 
function(){
 angular.bootstrap(document, ['myApp']);
});

app.js:

define([], function(){
    var myApp = angular.module('myApp', ['ngRoute']);
    $routeProvider.
        when('/home', {
                templateUrl : 'partials/home.html',
                controller : 'UserRegisterCtrl'
            }).
            otherwise({
                redirectTo : '/home'
            })
    return myApp;
})

controller.js

define(['app'], function(app){
    app.controller('MyCtrl', function($scope){});
})

myApp.html

body(ng-app)
     <div ng-controller = 'MyCtrl'></div>  <-- I can not put MyCtrl here 
because I think the MyCtrl has been declared before myApp has been bootstrapped

因此,我真的需要知道在myApp引导后是否有办法加载MyCtrl控制器。我是Angularjs的新手。任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

如果您手动引导角度应用程序,则不需要ng-app,因为这只是一个指令,几乎可以做同样的事情。

这个小陷阱导致一些人头疼:

答案 1 :(得分:1)

在html中使用ng-app时,引导程序会自动发生。在这种情况下,它取决于您在<script>中的index.html标记中添加的内容。

我假设您在使用RequireJS加载angular时遵循RequireJS用法。如果是,请确保使用angular声明appshim的相关性。如果不是这种情况,请说明您的加载方式angular并分享main.js的内容。

让RequireJS与AngularJS合作对我来说真的很棘手,所以我创建了以下帮助我处理复杂性的项目:

http://marcoslin.github.io/angularAMD