0

Rails 4 プロジェクトのクライアント側モジュール間の依存関係を管理するために、requirejs-rails を使用しています。

私のエントリポイントは次のとおりです。

(function (define, undefined) {
'use strict';

var mainModule = function(angular, routingConfiguration, controllers) {
    var restaurantsApp = angular.module('RestaurantsApplication', ['ui.router'])
    .config(routingConfiguration);

angular.forEach(controllers, function(controller, name){
  restaurantsApp.controller(name, controller);
  });
};

define(['angular', 'application/routing-configuration',
     'controllers', 'angular-ui-router'], 
     mainModule );
})(window.define);

ただし、定義関数で「注入」された各モジュールは未定義です。つまり、定義関数内で呼び出すと

console.log(arguments)

私は受け取ります

[undefined, undefined, undefined, undefined]

どこかに循環参照があると思ったので、angular以外のすべてのモジュールを削除しました

(function (define, undefined) {
'use strict';

var mainModule = function(angular) {
    var restaurantsApp = angular.module('RestaurantsApplication', []);
};

define(['angular'], 
     mainModule );
})(window.define);

しかし、同じ結果が得られます。角度は未定義です。

更新しました

requirejs.yml

paths:
  "angular"           : "angular"
  "angular-ui-router" : "angular-ui-router.min"

modules:
  - name: 'entry-point'
4

1 に答える 1

0

どうやら、何が悪いのかわかりました。Angular は最初から AMD をサポートしていません。

以下のようにrequierjs.ymlでシムを設定しました

shim:
  "angular" :
    exports : "angular"

  "angular-ui-router":
    exports : "angular-ui-router"
    deps : "angular"

そして、ウーフー!それは働いています!

于 2014-03-06T06:09:09.723 に答える