AngularJS控制器在单独的文件和异步加载 - RequireJS

时间:2015-08-14 12:48:52

标签: javascript angularjs requirejs

我是Angular的新人,所以我希望你能帮助我。

我想在未来的应用中实现这个结构:

// check for Geolocation support
if (navigator.geolocation) {
  console.log('Geolocation is supported!');
}
else {
  console.log('Geolocation is not supported for this Browser/OS version yet.');
}

我想使用RequireJS异步加载脚本,所以我从Angular Seed复制代码来修改它并修改它:

(if (js/navigator.geolocation)  ;; Uncaught TypeError: navigator.geolocation is not a function
   (println "Geolocation is supported")
   (println "Geolocation is not supported"))

如果我把控制器放在应用程序文件中,一切正常,但如果我将它们分开,而不是我面临的错误说:

  

错误:[$ injector:nomod]模块' npLogin'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

我很高兴这是因为如果它首先加载控制器文件,那么 app/ ----- components/ ---------- home/ --------------- homeController.js --------------- homeService.js --------------- homeView.html 尚未初始化。

应用文件:

$script([
    '<?php echo base_url('assets/v2/mobile/js/angular' . $minified . '.js'); ?>',
    '<?php echo base_url('assets/v2/mobile/js/angular-route' . $minified . '.js'); ?>',
    '<?php echo base_url('assets/v2/mobile/js/angular-animate' . $minified . '.js'); ?>',
    '<?php echo base_url('assets/v2/mobile/js/angular-aria' . $minified . '.js'); ?>',
    '<?php echo base_url('/v2/m_resources/js/login/controller'); ?>',
    '<?php echo base_url('/v2/m_resources/js/app/login'); ?>',              
], function () {
    // when all is done, execute bootstrap angular application
    angular.bootstrap(document, ['npLogin']);
});

控制器文件:

npLogin

提前致谢。

编辑:确定我找到了解决方案:

我必须创建另一个模块并将其作为依赖项注入主应用程序。

//我添加了&#34; use-strict too&#34;

APP:

angular.module('npLogin', [
    'ngRoute',
])
.config(['$routeProvider', function ($routeProvider) {
     $routeProvider
     .when('/', {
         templateUrl: '/m_resources/view/app/login.html',
         controller: 'NpLoginController'
     });
}]);

控制器:

angular.module('npLogin')
.controller('NpLoginController', ['$scope', function ($scope) {
    console.log(1);
}]);

0 个答案:

没有答案