我正在使用布爾值供電的下拉控件。我有一個由查找數據集數組(數值和文本屬性)組成的視圖模型,以及一個包含布爾值的數據集,該布爾值需要與數組中選定的值對齊。因此,viewmodel中的數據表示一個實際的數據項,而lookupdata實質上表示值對的映射。對於每個僅包含與其相關的信息的數據項目來說,這兩個項目確實需要保持獨立。敲下來 - 使用布爾值
我已經能夠得到一個示例工作,因爲它存在於viewmodel中並將其放置在viewmodel中的數據對象外部,但是我無法在viewmodel內部使其工作。我創建了一個JSFiddle,它在功能上展示了我希望用戶看到的內容,以及我擁有它所屬數據的位置,但下拉不能按預期工作。
活動映射爲true和Inactive映射爲false。它們之間的切換也會影響屏幕上的真/假。
http://jsfiddle.net/rodearly/xF78A/11/
<div data-bind="with: data">
<select data-bind="options: $root.lookupData.status, optionsText: 'text', optionsValue: 'value', value: IsActive"></select>
<label>Value: </label>
<span data-bind="text: IsActive"></span>
</div>
<div>Alternative</div>
<div>
<select data-bind="options: lookupData.status, optionsText: 'text', optionsValue: 'value', value: IsActive"></select>
<label>Value: </label>
<span data-bind="text: IsActive"></span>
</div>
function Item(id, name) {
this.id = ko.observable(id);
this.name = ko.observable(name);
}
function getLookupData() {
var lookupData = {};
lookupData.status = [{
text: "Active",
value: true
}, {
text: "Inactive",
value: false
}];
return lookupData;
}
CreateImplantEditViewModel = function (data, lookupData) {
var vm = {};
vm.data = ko.observable(data);
vm.IsActive = ko.observable(false);
vm.lookupData = {};
vm.lookupData.status = ko.observableArray(lookupData.status);
return vm;
};
debugger;
var editImplantVm = CreateImplantEditViewModel({
IsActive: false
},
getLookupData());
ko.applyBindings(editImplantVm);
感謝您的幫助,
〜大衛