Knockoutjs - 在下拉列表中设置值

时间:2014-10-07 04:20:45

标签: knockout.js

我在使用knockoutjs的字段中有一个下拉界限:

<select name="CanBePickedUpDropDown" id="CanBePickedUpDropDown" data-bind="value: CanBePickedUp">
    <option selected="selected" value="True">Yes</option>
    <option value="False">No</option>
</select>

在我的viewmodel中,该字段如下所示:

var viewModel = function () {
    var self = this;
    self.CanBePickedUp = ko.observable("");
}

现在我有一个Web API,可以将下拉值保存到数据库中。到目前为止,它的确有效。当我选择“不”时在下拉列表中,它在数据库中保存(PUT)为0(false)。我的问题是在加载时。我似乎无法通过下拉列表将值设置为“否”。 Web API如下所示:

self.LoadItem = function () {
    $.ajax({
        type: "GET",
        contentType: "application/json",
        url: "Home",
        dataType: "json",
        success: function (result) {
            var data = ko.utils.parseJson(result);
            if (data.CanBePickedUp === true)
                self.CanBePickedUp("Yes");
            else
                self.CanBePickedUp.value = "No";
        },
        error: function (xhr, err) {
        }
    });
};

在上面的调用中,data.CanBePickedUp正确返回false。我想将它分配给self.CanBePickedUp,以便我的下拉列表显示“No&#39; (它总是显示&#39;是&#39;)。我试过了:

self.CanBePickedUp.value = "No";
self.CanBePickedUp.value = false;
self.CanBePickedUp("No");
self.CanBePickedUp(false);

但他们都没有工作

2 个答案:

答案 0 :(得分:2)

根据文档的说法,你这样做的方式是错误的。这是你如何实现同样的目标。

  • 创建具有所有可能选项的observableArray
  • 创建另一个可保存有效值的observable ......

根据要求将值observable设置为Yes或no

JSFiddle here _ http://jsfiddle.net/5v96a6bp/1/

    var viewModel = function () {
        var self = this;
        self.canBePickedOptions = ko.observableArray(["Yes","No"]);
        self.selectedOption = ko.observable();

self.LoadItem = function () {
    $.ajax({
        type: "GET",
        contentType: "application/json",
        url: "Home",
        dataType: "json",
        success: function (result) {
            var data = ko.utils.parseJson(result);
            if (data.CanBePickedUp === true)
                self.selectedOption("Yes");
            else
                self.selectedOption("No");
        },
        error: function (xhr, err) {
        }
    });
};

答案 1 :(得分:1)

尝试self.CanBePickedUp("False")