2

IDを取得してrequire.jsモジュールに渡す必要があるページがあります。

したがって、ページへのリンクは次のようになります: www.website.com/SomeController/SomeAction/Id

このページは現在、次のように require.js を呼び出しています。

<script data-main="../Scripts/app/administrator/app.index" src="../Scripts/lib/require.js"></script>

app.index.js には次のコードがあります。

requirejs.config({
    "baseUrl": "../Scripts/app/administrator",
    "paths": {
        "app.index": "app.index",
        "ko": "../../lib/knockout-2.2.1",
        'knockout.bindings': "../../lib/knockout.bindings",
        "jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
        "toastr": "../../lib/toastr",
        "model.navigation" : "../models/model.navigation"
}
});

// Load the main app module to start the app
require(["main.index"], function (bs) { bs.run(); });

main.index.js には次のコードがあります。

define(['ko', 'indexViewModel', 'model.navigation'], function (ko, indexViewModel, Navigation) {
    var
        run = function () {
            var vm = new indexViewModel();

            var array = new Array();
            $.getJSON("/api/navigations/getmynavigation/", function (data) {
                $.each(data, function (key, val) {
                    var n = new Navigation();
                    n.navigationId(val.NavigationId);
                    n.name(val.Name);
                    array.push(n);
                });
            }).done(function(){
                vm.navigations(array);
            });

            ko.applyBindings(vm, document.getElementById('#administrator-home-view'));
        };
    return {
        run: run
    };
});

私が混乱しているのは、このモジュールにパラメーターを渡したい場合、どうすればよいですか?

パラメータのソースは次のものから取得できます。

  1. アンカー:<a href="/administrator/user/3>Bob</a>
  2. サーバー側: ビューを返す(3)

いずれにしても、require.js でどのように行われますか?

4

2 に答える 2

2

コンストラクタのような初期化フェーズが必要な場合は、次のようにします。

エンジン.js

define('engine', [], function() {
    return function(param) {
        return {
            getParam: function() { return param; }
        }
    }
};

home.js

require('engine', function(engine) {
    var eng = engine('myparam')
    console.log(eng.getParam()); // should return 'myparam'
});

ここでの違いは、'engine' はオブジェクトではなく関数を返すことです。そのため、'eng' をパラメーター付きの関数として呼び出すことを覚えておく必要があります。

于 2014-04-06T01:05:49.827 に答える