2013-06-13 2 views
0

Используя knockout и knockout mapping, как я могу перехватить запись свойства?Как перехватить запись с помощью библиотеки отображения нокаута

Что я пробовал:

var data = { someBool: false, someOther: 'test value' }; 
var vm = ko.mapping.fromJS(data); 
viewModel.someBool = ko.computed({ 
    read: function() { return this.someBool(); } 
    , write: function (value) { this.someBool(value); $("#out").append("<br/>writing " + value); } 
    , owner: this 
}); 
ko.applyBindings(vm); 

Я получаю следующее сообщение об ошибке при загрузке в ЯШ: Uncaught TypeError: Object [object global] has no method 'someBool'

Живые JS здесь: http://jsbin.com/exokav/1/edit

Просто пытаюсь добавить некоторые $ (» #out ") div, который у меня есть, но позже я хотел бы написать localStorage, чтобы сохранить состояние для пользователя. Благодарю.

+0

Что вы пытаетесь достичь? Почему вы просто «подписываетесь» на свойство 'someBool'? http://jsbin.com/exokav/2/edit – nemesv

+0

Возможно, 'subscribe' - это то, что я ищу! Как мне это сделать? В конечном итоге я пытаюсь создать способ обновить 'localStorage' всякий раз, когда пользователь переключает этот флажок, который является' data-bind' в '.someBool'. более подробно в сообщении, «но позже я хотел бы ...» –

ответ

0

Если вы просто пытаетесь написать локальное хранение при someBool изменения, сделайте следующее:

viewModel.someBool.subscribe(function(val) { 
    // Write val to local storage. 
}); 
Смежные вопросы