我遇到了敲除選擇列表綁定的問題,我的問題是我有一個項目列表,其中包含說明,關鍵和可編輯。使用我正在填充選擇框的項目列表。當選擇列表初始化時,敲除火災會改變事件
var RequiredItemLine = function() {
var self = this;
self.desc = ko.observable();
self.key = ko.observable();
self.editable = ko.observable(false);
self.requireditemsdata = ko.observableArray([
{ desc: "Boarding of exposed wall openings in the vicinity of ...", key: "233", editable: true },
{ desc: "Call in manufacturers to initiate repairs on ...", key: "242", editable: true },
{ desc: "Call in specialist restorers/recoverers for ...", key: "244", editable: true },
{ desc: "Dispatch items for repair (schedule enclosed)", key: "243", editable: false },
{ desc: "Drying and cleaning of contents comprising ...", key: "240", editable: true },
{ desc: "Drying and protective oiling of water affected equipment", key: "241", editable: false },
{ desc: "Drying out of the affected areas of the premises", key: "235", editable: false },
{ desc: "Removal and repackaging of stock comprising ...", key: "239", editable: true },
{ desc: "Removal of agreed vulnerable contents to a place of safety (schedule enclosed) ", key: "236", editable: false },
{ desc: "Segregation of affected and unaffected stock comprising ...", key: "238", editable: true },
{ desc: "Temporary covering of roof to reinstate water tight integrity ", key: "234", editable: false },
{ desc: "Temporary guarding of affected area", key: "237", editable: false },
{ desc: "Temporary shoring of affected structure", key: "232", editable: false }]);
self.selectedItem = ko.observableArray([]);
self.selectedItem.subscribe(function (newValue) {
if (newValue) {
self.editable(newValue.editable);
//alert(newValue.editable);
}
});
}
當用戶從選擇列表中的一個選項,它包含屬性可編輯,然後選擇列表必須從DOM隱藏和文本框必須是可見的DOM和價值已經從分配從選擇列表中選擇desc。
var RequiredItems = function() {
var self = this;
self.requiredItemSelection = ko.observableArray([]);
self.addRequiredItem = function() {
self.requiredItemSelection.push(new RequiredItemLine());
};
self.removeRequiredItem = function (line) {
self.requiredItemSelection.remove(line);
};
}
var vm = new RequiredItems();
ko.applyBindings(vm);
問題是每當select被加載到DOM更改事件時都會觸發並顯示選擇列表或輸入字段。
<div class='liveExample' >
<button data-bind='click: addRequiredItem'>Add Required Item</button>
<hr />
<table width='100%'>
<tbody data-bind='foreach: requiredItemSelection' >
<tr>
<td >
<select data-bind='options: requireditemsdata, optionsText: "desc", value: selectedItem'> </select>
</td>
<td>
<a href='#' data-bind='click: $parent.removeRequiredItem'> <img src="../images/Close.gif" /></a>
</td>
</tr>
<tr data-bind="visible : selectedItem().editable">
<td>
<div class="editablecontent" data-bind='html : selectedItem().desc.replace(/\.\.\./g, "<span style='background-color:#ff77ee;margin-left:-2px;letter-spacing:0.05em' contenteditable >...</span>")'></div>
</td>
</tr>
</tbody>
</table>
<ul data-bind='foreach: requiredItemSelection'>
<li data-bind="text : selectedItem().desc "></li>
</ul>
</div>
看到小提琴http://jsfiddle.net/aroor/VFv4H/3/ 注:我不想使用optionsCaption結合。有什麼辦法可以解決這個問題嗎?或者我沒有正確地聲明數據結構?
你能描述你有一個遠一點的問題?是否在頁面加載時看到選擇/輸入?一個技巧是將「data-bind =」visible:true「style =」display:none「'添加到容器元素,並在頁面被綁定時顯示:http://jsfiddle.net/rniemeyer/VFv4H/4/ – 2013-05-13 13:22:11
抱歉,英語不是我的第一語言。問題是無論何時用戶選擇選擇列表,根據所選項目它包含一個名爲editable的屬性,如果可編輯爲true,則顯示帶有所選desc的內容可編輯div和隱藏選擇列表。 – Aroor 2013-05-13 13:36:00
@RPNiemeyer現在我編輯了這個問題,小提琴裏有什麼。主要目的是我創建一個contenteditable div動態取決於選擇列表中的選擇。 – Aroor 2013-05-13 13:45:21