Rivets Js Global onchange事件处理程序

时间:2015-04-08 09:02:55

标签: rivets.js

我正在努力让自己陷入铆钉之中,但我需要做一些应该简单的事情,而且我不太清楚该怎么做。

我的案例场景很简单:我有这个数据集,无论何时在'rows'或'row'中发生更改,我都需要立即将这些更改发送到服务器。

对我来说看起来像是一种常见的模式,但如果没有作弊,我就无法做到。

到目前为止,这是我的解决方案:

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 个答案:

答案 0 :(得分: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">

我意识到如果我按照我的方式捕获更新,每次按键都会调用服务器。