Rivetjs Глобальный обработчик события onchange

Я стараюсь изо всех сил, чтобы справиться с заклепками, но мне нужно сделать что-то, что должно быть простым, и я не совсем уверен, как это сделать.

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

Похоже, это обычная картина для меня, но я не могу сделать это без обмана.

Это мое решение до сих пор:

var data = {
    rows: [
        {name: 'John', age: 30},
        {name: 'Mary', age: 29}
    ]
}

var self = this
    , valRoutine = rivets.binders['value'].routine;
rivets.binders['value'].routine = function(el, value) {
    var res = valRoutine.call(this, el, value);
    self.doServerStuff(this.model);
    return res;
};

Как сделать обработку событий в заклепках? События по умолчанию не определены? Я думаю, что "onModel[add|change|del]Event" должно быть в коробке, я что-то упустил? Наверное, да, но документы не сильно помогают, и найти примеры не так просто, так что... =/

Кто-нибудь может помочь в этом?

Ах, кстати, примеры того, как заставить компоненты работать, кто-нибудь? Это была одна из главных причин, по которой я наткнулся на заклепки.

Спасибо!!!

1 ответ

Хорошо, нашел гораздо лучший способ:

rivets.binders['update'] = {
    bind: function(el) {
        var self    = this
            , field = this.keypath
        ;

        this.callback = function() {
            var page = self.observer.obj;
            if (page.data.main.status == 'editing') {
                var data = {row:{}};
                data[page.key]  = page.data.main.row[page.key];
                data.row[field] = page.data.main.row[field];
                page.exec('update', {
                    data: data
                }, this);
            }
        };

        $(el).on('change', this.callback);
    },

    unbind: function(el) {
        $(el).off('change', this.callback);
    },

    routine: function(el, value) {
    }
};

А потом просто:

<input rv-update="my_field" rv-value="data.row.my_field">

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

Другие вопросы по тегам