Knockout.js通过id选择动态选项

时间:2012-08-29 13:09:12

标签: model-view-controller knockout.js

我想知道是否有可能从一个函数中获取select选项值,该函数是用参数调用的。

例如:

我的标记

<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”确实包含正确的数据,但选择中没有数据显示。

我尝试了几件事,但无法做到。任何想法(或提示我做错了)?

1 个答案:

答案 0 :(得分:1)

您应该将return放在$.getJSON之前,因为您的getSelectionData函数不返回任何内容而不是JSON请求的结果:

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;
    }
};