【问题标题】:how to make backbone.stickit collect all values at once?如何让backbone.stickit 一次收集所有值?
【发布时间】:2014-05-27 13:54:29
【问题描述】:
问题:
我使用backbone.stickit 为表单进行2 路绑定。但是,除非我将所有属性的 updateModel 设置为 false,否则我发现很难取消该集合。所以,问题是,当用户单击保存按钮时,如何从表单中获取所有值。
A.K.A 我如何在 Stickit 中一次性手动收集数据?
我试图访问它以获取所有处理程序,以便我可以手动触发,但显然,由于getConfiguration 函数是私有的,我无权访问它。
【问题讨论】:
标签:
backbone.js
backbone-stickit
【解决方案2】:
我错了。 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);
}
要使用它,只需在主干视图中调用它
stickitGetValues.call(this, ["name", "age", "whatever"]);
因此视图的模型将相应更新。