我在使用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);
但他们都没有工作
答案 0 :(得分:2)
根据文档的说法,你这样做的方式是错误的。这是你如何实现同样的目标。
根据要求将值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")