KnockoutJS подписаться на изменения свойств с плагином Mapping

Есть ли в любом случае я могу сказать плагину отображения нокаута, чтобы подписаться на все изменения свойств вызова определенной функции?

Я понимаю, что могу вручную подписаться на событие изменения свойства следующим образом:

<code>var viewModel = {
    name: ko.observable('foo'),
}

// subscribe manually here
viewModel.name.subscribe(function(newValue){
   // do work
})
</code>

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

Здесь я принимаю viewmodel в качестве аргумента и пытаюсь отразить его подписку на свойства:

<code>function subscribeToKO(data) {

        $.each(data, function (property, value) {
            if (getType(value) == "Object")
                data[property] = subscribeToKO(value);
            else if (getType(value) == "Array") {
                $.each(value, function (index, item) {
                    item = subscribeToKO(item);
                });
            }
            else {
                if (value.subscribe) {
                    value.subscribe(function (newValue) {
                        // do work                                         
                    });
                }
            }
        });
        return data;
    }
</code>

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

Что-то вроде:

<code>mapping = {
   create: function(options){
       options.data.subscribe(function(newValue){
            // do work ???
       });
   }
}

ko.mapping.fromJS(viewModel, mapping);
</code>

Есть идеи?

Ответы на вопрос(0)

Ваш ответ на вопрос