requirejs和angularjs 1.5注入ui.router组件失败

时间:2016-07-07 14:20:19

标签: angularjs angular-ui-router requirejs components

使用推荐的组件加载方法(See step 3

时出现此错误
  Error: Module name "angular-ui-router" has not been loaded yet for context: _. Use require([])

app模块定义:

<script>
  var adminApp = angular.module('adminClientApp', [require('angular-ui-router'), 'ngMaterial', 'ngResource', 'ngMessages', 'ngMdIcons']);
</script>

根据doco,不需要包含脚本标记 - 它将通过requirejs加载

Requirejs main.js定义:

  require.config({
    paths:{
        'angular-ui-router': 'vendor/angular-ui-router/release/'
    },
    shim:{
       'angular': {
          exports: 'angular'
     }
   }
  });

应用布局:

  -- root
     index.html
     main.js
     -- js
         -- app (angular files here)
            app.js
     -- vendor (3rd party libs)

index.html中的requirejs main.js设置

  <script data-main="main.js" src="vendor/requirejs/require.js"></script>  

1 个答案:

答案 0 :(得分:1)

您使用的指南不适用于RequireJS。在那里应用说明之后,你正在做这样的事情:

Prob(Q,isin(Q,c("Ash Gray", rep(c("Ghost White", "Ash Gray"),1))))

这通常无法使用RequireJS,因为使用单个字符串调用> Prob(Q,isin(Q,c("Ash Gray", rep(c("Ghost White", "Ash Gray"),2))) 会失败,除非模块已经加载。只有在<script> var myApp = angular.module('myApp', [require('angular-ui-router')]); </script> 内,才能保证此调用有效,如下所示:

require

此代码是一个模块,应该位于单独的define文件中并加载define(function (require) { var myApp = angular.module('myApp', [require('angular-ui-router')]); }); 。 (注意,参数是一个字符串数组。这是.js的另一种形式,而不是采用单个字符串参数的形式。)

您应该使用Component,这是您正在使用的指南的作者在撰写指南时所使用的,或者是与其相当的工具。否则,您需要将代码转换为使用RequireJS。