녹아웃 선택 목록 바인딩에 문제가 있습니다. 내 문제는 설명, 키 및 수정이 가능한 항목 목록이 있습니다. 항목 목록을 사용하여 선택 상자를 채 웁니다. 사용자가 선택 목록에서 옵션을 선택할 때마다 선택 목록 초기화시 녹아웃이 변경 이벤트를 발생시킵니다.
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를 사용하려는 해달라고. 이 문제를 해결할 방법이 있습니까? 아니면 내가 제대로 데이터 구조를 선언하지 않았습니까?
아래와 같이 다른 당신은 당신이 조금 더 발생하는 문제를 설명 할 수 optionsCaption를 사용할 수 있습니까? 페이지를로드하는 동안 select/input을보고 있습니까? 하나의 트릭은'data-bind = "visible : true"style = "display : none"'을 컨테이너 요소에 추가하는 것입니다. 그러면 페이지가 다음과 같이 바인딩 될 때 표시됩니다 : http://jsfiddle.net/rniemeyer/VFv4H/4/ –
죄송합니다. 제 첫 번째 언어는 영어가 아닙니다. 문제는 편집 가능한 항목이 true 인 선택한 항목에 따라 선택 목록을 선택할 때마다, 선택한 항목이있는 콘텐츠 편집 가능한 div를 표시하고 선택 목록을 숨 깁니다. – Aroor
@RPNiemeyer 이제 질문을 편집했습니다. 무엇이 바이올린에 있습니까?주된 목적은 선택 목록의 선택에 따라 동적으로 contenteditable div를 만드는 것입니다. – Aroor