【问题标题】: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


    【解决方案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"]);
    

    因此视图的模型将相应更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2016-02-27
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多