如何使backbone.stickit一次收集所有值?

时间:2014-05-27 13:54:30

标签: backbone.js backbone-stickit

问题:

我使用backbone.stickit对表单进行双向绑定。但是,除非我为所有属性设置updateModelfalse,否则我发现很难取消该集合。所以,问题是,当用户单击“保存”按钮时,如何从表单中获取所有值。

A.K.A如何在stickit中手动收集所有数据?

我尝试访问它以获取所有处理程序,因此我可以手动触发,但显然,由于getConfiguration函数是私有的,我无法访问它。

2 个答案:

答案 0 :(得分:0)

我错了。 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"]);

所以视图的模型会相应更新。

答案 1 :(得分:0)

查看Backbone.trackit - 它旨在帮助管理未保存的属性,并且可以很好地处理stickit。