Angular + angularAMD,在引导应用程序之前加载控制器

时间:2013-12-20 16:33:38

标签: angularjs amd

首先,感谢这个伟大的插件! (对于angularAMD的作者)

我有些麻烦。我有所有加载了ngAMD的模块,但是有两个在我的index.html中,因为是模板而且我是这样的:

 <div ng-include="'views/header.html'"></div>

header.html使用HeaderCtrl,但我不知道如何在angularAMD.bootstrap之前加载......

更多代码:

需要应用

header.coffee

define ['app', 'bootstrap'], (app, bs) ->
  'use strict'

  app.controller 'HeaderCtrl', ($scope, $rootScope) ->
    $scope.searchText = "";

    $scope.updateSearch = -> 
      $rootScope.searchText = $scope.searchText;

app.coffee

define ['angular', 'angularAMD'], (angular, angularAMD) ->
  'use strict'

  app = angular.module 'testsApp', [
    'ngRoute'
    'localization'
    'restangular'
  ]

  angularAMD.bootstrap app
  app

启动应用程序后,ng尝试解决ng-include但未加载HeaderCtrl!这只发生在页面上的CTRL + F5,这是加载时间的问题。我不知道如何解决这个问题。任何提示?

1 个答案:

答案 0 :(得分:2)

问题是angularAMD.bootstrap app位置。我在加载每个依赖项之前进行了自举。

我在删除加载后移动angularAMD.bootsrapp调用,现在所有工作都是:

bootstrap.coffee (应用程序引导程序)

define [
  'app'
  'jquery'
  '_'
  'angularAMD'
  'ctrl/header'
  'ctrl/menu']
, (app, $, _, angularAMD) ->

  # bootstrapping all dependencies
  $.get "modules/modules.json", (deps) ->
    # converts all array items from DEP to module!DEP
    deps = _.map deps, (dep) ->
      "module!#{dep}"

    console.log JSON.stringify deps
    require deps, ->
      console.log "Dependencies loaded!"
      # I'll bootstrap angular only after each dependencies are loaded, this prevents many 'random' issues.
      angularAMD.bootstrap app

我希望这可以帮助某人:)