Mam problem z wiązaniem listy wyborów, no cóż, mam problem z listą pozycji, która zawiera opis, klucz i możliwość edycji. używając listy przedmiotów wypełniających pole wyboru.Knockout pożary zmieniają zdarzenie, gdy lista wyboru inicjuje listę.
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);
}
});
}
gdy użytkownik wybierz opcje z listy select, zawiera właściwość edycji, a następnie wybierz Lista musi ukrywać się przed DOM i pole tekstowe musi być widoczny dla DOM i wartość musi przypisane od wybrany opis z listy wyboru.
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);
problemem jest to, ilekroć select jest ładowanie do zdarzenia zmiany DOM jest wypalanie i wyświetlenie listy wyboru lub pole wprowadzania.
<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>
zobaczyć na skrzypcach http://jsfiddle.net/aroor/VFv4H/3/ Uwaga: Nie chcę używać wiązania optionsCaption. czy jest jakiś sposób rozwiązania tego problemu? Czy nie zadeklarowałem poprawnie struktury danych?
można opisać problem, że mają trochę dalej? Czy podczas wczytywania strony wyświetlany jest wybór/dane wejściowe? Jedna z nich polega na dodaniu 'data-bind =" visible: true "style =" display: none "' do elementu kontenera i zostanie wyświetlony po powiązaniu strony w następujący sposób: http://jsfiddle.net/rniemeyer/VFv4H/4/ –
Niestety, angielski nie jest moim pierwszym językiem. Problem występuje zawsze, gdy użytkownik wybierze listę wyboru, zgodnie z wybranym elementem zawiera właściwość o nazwie edytowalną, jeśli można edytować, a następnie wyświetla zawartość edytowalną div z wybranym opisem i ukryj listę wyboru. – Aroor
@RPNiemeyer Teraz edytowałem pytanie, co jest w skrzypcach.głównym celem jest tworzenie contenteditable div dynamicznie zależy od wyboru z listy select. – Aroor