如何让backbone.stickit 一次收集所有值?
Posted
技术标签:
【中文标题】如何让backbone.stickit 一次收集所有值?【英文标题】:how to make backbone.stickit collect all values at once? 【发布时间】:2014-05-27 13:54:29 【问题描述】:问题:
我使用backbone.stickit
为表单进行2 路绑定。但是,除非我将所有属性的 updateModel
设置为 false
,否则我发现很难取消该集合。所以,问题是,当用户单击保存按钮时,如何从表单中获取所有值。
A.K.A 我如何在 Stickit 中一次性手动收集数据?
我试图访问它以获取所有处理程序,以便我可以手动触发,但显然,由于getConfiguration
函数是私有的,我无权访问它。
【问题讨论】:
【参考方案1】:看看Backbone.trackit - 它旨在帮助管理未保存的属性,并且与stickit配合得很好。
【讨论】:
不错!这就是我要找的。span> 【参考方案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"]);
因此视图的模型将相应更新。
【讨论】:
以上是关于如何让backbone.stickit 一次收集所有值?的主要内容,如果未能解决你的问题,请参考以下文章
模型未在表单提交时更新,使用 Backbone + Stickit
使用 Backbone stickit 进行 Backbone Validation - 更改属性时验证所有属性
我正在使用backbone.stickit 进行模型绑定。如何将预填充选择与模型绑定?
Backbone.stickit 和 html-form:如何只保存(补丁)更改的属性?
为 Backbone.Stickit.js 绑定设置全局 setOptions
与 require.js 和 backbone.stickit 一起使用时出现奇怪的 Backbone.Validation 错误