Knockout JS - обновить данные ViewModel с помощью специального скрипта - PullRequest
2 голосов
/ 13 марта 2012

Я хотел бы реализовать функцию выбивки для уже существующей страницы.Поэтому я хочу манипулировать данными ViewModel из существующего скрипта.Я смоделировал пример, но он не работает правильно.

ViewModel правильно привязан к пользовательскому интерфейсу (, попробуйте ввести во ввод ).Это также работает, когда я изменяю данные ViewModel в бэкэнде ( нажатием кнопки ).Однако, когда я снова изменяю входное значение, вводя его в поле ввода, данные не изменяются.

Как можно предварительно изменить данные ViewModel из бэкэнда ( некоторый существующий код манипулирует данными ),Обратите внимание, что в качестве примера я использовал событие нажатия jQuery.Существующий код может манипулировать данными по-разному.

Вот код (HTML):

<!-- View -->
<p>First name: <strong data-bind="text: myName"></strong></p>
<input data-bind="value: myName"></input>
<button>Click me</button>

И JS:

// ViewModel
var AppViewModel = function() {
    this.myName= ko.observable("John Doe");
}
// ViewModel instance
var app = new AppViewModel();

// Activates knockout.js
ko.applyBindings(app);

// Custom external code that changes the data in the ViewModel instance
$("button").click(function() {
    app.myName= ko.observable("Steve Peterson");
    ko.applyBindings(app);
});

1 Ответ

4 голосов
/ 13 марта 2012

Вместо создания новой наблюдаемой в обработчике кликов

app.myName= ko.observable("Steve Peterson");

изменить значение существующей наблюдаемой

app.myName("Steve Peterson");

Рабочий пример http://jsfiddle.net/S9HBq/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...