0

パラメータを使用して呼び出される関数から選択オプションの値を取得する可能性があるかどうか疑問に思っています。

例えば:

私のマークアップ

<select data-bind="options: $root.getOptions('one', $data.ID), optionsCaption: '...', optionsText:'Txt', optionsValue:'ID'">

私のjs

    self.getSelectionData = function (type, param) {
    if (type == "one") {
        var idParam = new Object();
        idParam.id = param();
        $.getJSON('/MyController/MyGetAction', idParam, function (result) {
            var r = ko.mapping.fromJS(r);
            return r;
        });
    }
};

「r」には正しいデータが含まれていますが、選択範囲にデータは表示されません。

私はいくつかのことを試みましたが、それを行うことができませんでした。何かアイデア(または私が間違っていることを示唆する)?

4

1 に答える 1

1

関数はJSONリクエストの結果ではなく何も返さないため、return前に置く必要があります。$.getJSONgetSelectionData

return $.getJSON('/MyController/MyGetAction', idParam, function (result) {
    var r = ko.mapping.fromJS(result);
    return r;
});

rまたは、getSelectionData関数で定義できます。

    self.getSelectionData = function (type, param) {
    if (type == "one") {
        var idParam = new Object();
        idParam.id = param();
        var r;
        $.getJSON('/MyController/MyGetAction', idParam, function (result) {
            r = ko.mapping.fromJS(result);
        });
        return r;
    }
};
于 2012-08-29T13:26:43.720 に答える