Я хочу создать грязный флаг, используя нокаут. Я хочу включить кнопку сохранения, только если что-то изменилось. Мой вид и модель моего вида в точности совпадают с примером, найденным в учебнике по knockout js Загрузка и сохранение данных. Ссылка на учебник

Я следую примеру скрипки, опубликованному Райаном здесь

Я не могу понять, где объявить ниже код, который он объявил в представленной модели.

 this.dirtyFlag = new ko.dirtyFlag(this);

Если я возьму пример из учебника по нокауту, ссылку, которую я разместил выше, и я попробовал как ниже

function Task(data) {
this.title = ko.observable(data.title);
this.isDone = ko.observable(data.isDone);
this.dirtyFlag = new ko.dirtyFlag(this);

}

Слепил мой взгляд как ниже

<button data-bind="click: saveOperation , enable: isDirty" >Save</button>

Это дает мне ошибку, так как не может разобрать привязку isDirty не определена.

Я не уверен, как продолжать осуществлять это.

3
DevelopmentIsMyPassion 28 Янв 2013 в 21:05

2 ответа

Существует также плагин ko.editables: https://github.com/romanych/ko.editables

var user = {
    FirstName: ko.observable('Some'),
    LastName: ko.observable('Person'),
    Address: {
        Country: ko.observable('USA'),
        City: ko.observable('Washington')
    }
};
ko.editable(user);

user.beginEdit();
user.FirstName('MyName');
user.hasChanges();          // returns `true`
user.commit();
user.hasChanges();          // returns `false`
user.Address.Country('Ukraine');
user.hasChanges();          // returns `true`
user.rollback();
user.Address.Country();     // returns 'USA'
0
delixfe 8 Фев 2013 в 20:22

Флаг грязного нокаута уже реализован в небольшой библиотеке koLite - https://github.com/CodeSeven / Колите.

Или вот пример его создания: http: //www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html

4
Artem Vyshniakov 28 Янв 2013 в 20:55