问题:
我曾经backbone.stickit
为表单做 2 路绑定。但是,除非我为所有属性设置updateModel
为,否则我发现很难取消集合。false
所以,问题是,当用户单击保存按钮时,我如何从表单中获取所有值。
AKA 我如何在stickit 中一次手动收集数据?
我试图访问它以获取所有处理程序,以便我可以手动触发,但显然,由于getConfiguration
函数是私有的,我无权访问它。
问题:
我曾经backbone.stickit
为表单做 2 路绑定。但是,除非我为所有属性设置updateModel
为,否则我发现很难取消集合。false
所以,问题是,当用户单击保存按钮时,我如何从表单中获取所有值。
AKA 我如何在stickit 中一次手动收集数据?
我试图访问它以获取所有处理程序,以便我可以手动触发,但显然,由于getConfiguration
函数是私有的,我无权访问它。
我错了。getConfiguration 可以通过 访问Backbone.Stickit.getConfiguration
,所以我想出了这个函数来获取所有值。
// for backbone form views with stickit enabled
// to get all observed fields at once
var stickitGetValues = function (values) {
_.each(this.bindings, function(v, selector) {
var namespace = '.stickit.' + this.model.cid;
var $el = this.$(selector);
var binding = this.bindings[selector];
var config = Backbone.Stickit.getConfiguration($el, binding);
if (values.indexOf(config.observe) != -1 && config.events && config.events.length > 0) {
var event = config.events[0] + namespace;
var val = config.getVal.call(this, $el, event, config);
this.model.set(config.observe, val, {silent: true});
}
}, this);
}
使用它只需在backbone.view中调用它
stickitGetValues.call(this, ["name", "age", "whatever"]);
因此视图的模型将相应更新。
看看Backbone.trackit - 它旨在帮助管理未保存的属性,并且与 Stickit 配合得很好。