17

require.js にマッピングプラグインをロードする標準的な方法は何ですか?

以下は私のconfig.js(require.js構成ファイル)です

require.config({
    // Initialize the application with the main application file.
    deps: ["app"],

    paths:{
        // JavaScript folders.
        libs: "lib",
        plugins: "lib/plugin",
        templates: "../templates",

        // Libraries.
        jquery: "lib/jquery-1.7.2.min",
        underscore: "lib/lodash",
        text: 'text',
        order: 'order',
        knockout: "lib/knockout",
        knockoutmapping: "lib/plugin/knockout-mapping"

    },

    shim:{
        underscore:{
            exports: '_'
        },

        knockout:{
            deps: ["jquery"],
            exports: "knockout"
        }
    }
}

私のビューモデルでは

define(['knockout', 'knockoutmapping'], function(ko, mapping) {
}

ただし、マッピングは ko.mapping にバインドされていません。任意のポインタ/提案をいただければ幸いです。

ありがとう、ラヴィ

4

3 に答える 3

31

AMD で使用すると、マッピング プラグインはその機能を別のオブジェクトにエクスポートします。したがって、機能は変数にアタッチされ、そのmapping変数からメソッドを呼び出します (のようにmapping.fromJS)。

変更できないことに依存するコードがある場合は、コードにko.mappingequalを設定することを選択できます。mappingko.mapping

于 2012-06-25T22:12:16.120 に答える
7

構成オブジェクトは、一連の依存関係と、さらに依存関係の構成/操作を実行できるコールバックを指定できます。

var require = {
  paths: {
    'knockout': '...',
    'mapping': '...'
  },

  // configuration dependencies

  deps: ['knockout', 'mapping'],

  // configuration callback

  callback: function (ko, mapping) {
    ko.mapping = mapping;
  }
};

また、スクリプトをマークアップに含める場合は、require の前に構成をロードする必要があります。

<script src="/scripts/config.js" />
<script src="/scripts/require.js" />

これで、Knockout.js はko.mapping、モジュール定義で使用するときに、必要に応じてプロパティで使用できるようになります。

define(['knockout'], function (ko) {
  // ko.mapping is available
});

これは簡略化された構成例であることに注意してください。マッピング プラグインが適切なエクスポートを指定するために必要なシミングがあります。

于 2013-05-08T20:21:37.577 に答える
4

ちなみに、 Lo-Dashを使用しているため、RequireJSの「shim」オプションに「アンダースコア」を含める必要はありません。Lo-DashにはAMDサポートが組み込まれています。

于 2012-07-07T21:11:16.720 に答える