NG-TABLE - 匿名的define()模块不匹配

时间:2014-11-18 10:45:18

标签: angularjs requirejs ngtable

我正在尝试将ngTable与require.js和head.js一起使用,但我收到以下错误:

未捕获错误:匿名的define()模块不匹配:

function (angular) {
return factory(angular);
}

这是我的require config:

(function(head){
        'use strict';
        head.js(
            { jquery: "../vendor/jquery/dist/jquery.js"},
            { require: "../vendor/requirejs/require.js" },
            { angularjs: "../vendor/angular/angular.js" },
            { uiRouter: "../vendor/angular-ui-router/release/angular-ui-router.js" },
            { angularTable: "../vendor/ng-table/ng-table.js"}
        ).ready("ALL", function(){
            require.config({
                appDir: '',
                baseUrl: '',
                paths: {
                },
                shim: {
                    angularjs: {
                        deps: ['jquery'],
                        exports: 'angular'
                    },
                    uiRouter: {
                        deps: ['angularjs'],
                        exports: ""
                    },
                    angularTable:{
                        deps: ['jquery', 'angularjs'],
                        exports: ""
                    }
                }
              });
              require(['config'], function(config){
                  // app bootstrap and start
              });
        });
    }(window.head));

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

我不熟悉head.js但是从一点搜索看来,你正在使用它来加载jQuery,AngularJS等。然后,在RequireJS中你的代码将jQuery,AngularJS等列为依赖项。您通常不能两种方式:在RequireJS外部和内部加载RequireJS模块。在不知道您的应用程序的情况下,最合适的解决方案是使用RequireJS加载所有模块。

答案 1 :(得分:0)

好吧,我刚刚发现了这个问题,但我没有时间发布它。 RequireJs文档说必须加载所有通过RequireJs调用define的脚本(ngTable中有一个define调用)。如上所示,我使用head.js加载ngTable。解决方案是从ngTable中删除定义调用。希望它可以帮助别人!