我正在努力让自己陷入铆钉之中,但我需要做一些应该简单的事情,而且我不太清楚该怎么做。
我的案例场景很简单:我有这个数据集,无论何时在'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”应该在框中,我错过了什么?可能是,但是文档没有多大帮助,并且找不到例子也不容易,所以... = /
有人可以为此提供帮助吗?
啊,顺便说一下,有关如何将组件投入使用的样本,有人吗?这是我遇到铆钉的主要原因之一。
感谢!!!
答案 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">
我意识到如果我按照我的方式捕获更新,每次按键都会调用服务器。