Итак, у меня этот SPA разработан с использованием this sample.Обновление ViewModel с использованием пользовательских привязок KnockoutJS
Образец показывает список Todo в табличном что-то вроде этого
<section id="lists" data-bind="foreach: todoLists, visible: todoLists().length > 0">
<table width="100%" style="margin-top: 20px;" class="table-main">
<thead>
<tr class="b-table-line">
<th>Select</th>
<th>Title</th>
<th>Artist</th>
</tr>
</thead>
<tbody data-bind="foreach: todos">
<tr>
<td>
<input type="checkbox" data-bind="checked: isDone" /></td>
<td>
<input class="todoItemInput" type="text"
data-bind="value: title,
disable: isDone,
blurOnEnter: true,
updateOnTitle:true,
click: $root.clearErrorMessage" />
</td>
<td>
<input class="todoItemInput" type="text"
data-bind="value: artist,
click: $root.clearErrorMessage" />
</td>
</tr>
</tbody>
</table>
Теперь то, что я пытаюсь сделать здесь, как только я изменить Title
текст, я пытаюсь изменить Artist
текст, а также , для этого я создал пользовательскую привязку updateOnTitle
и связал ее с текстовым полем, как показано в таблице. Его определение выглядит примерно так:
ko.bindingHandlers.updateOnTitle = {
init:function(element,valueAccessor,allBindings,viewModel,bindingContext)
{
$(element).blur(function (evt) {
//Here I am trying to update the artist property based on title
bindingContext.$data.title("Title goes here");
bindingContext.$data.artist("New Artist Name Here");
}
}
Изменения не отражены в таблице выше. Оба эти свойства наблюдаемы. Я хотел бы знать, что именно я здесь не хватает?
Возможно, объяснение того, почему вы должны изменить художника и название одновременно, может помочь с пониманием желаемой функциональности. – Origineil
Ну его как .. Я запрашиваю детали из API и на основе заголовка API также возвращает имя исполнителя, поэтому я хочу изменить оба – Sandhurst
Эй, эй! Пожалуйста, помогите нам [воспроизвести] (http://sscce.org) эту проблему с еще одним кодом в вопросе и, возможно, добавьте воспроизведение как [скрипка] (http://jsfiddle.net/). – Jeroen