Stickit:如何在每个模型后触发更改事件 - >视图更改

ivo*_*ory 4 backbone.js backbone-stickit

我在视图中有很多事件绑定到元素,但是当我使用stickit js通过更改模型来更改视图中的值时,它不会触发onChange事件.

有没有办法可以为当前模型触发onchange事件:在模型中设置值后的元素,而不必为每个绑定编写处理程序?这适用于所有表单元素input/select/textarea.

我想为页面上的每个表单元素避免以下内容:

bindings: {
    '#foo': {
         observe: 'foo',
         afterUpdate: 'forceChange'
    },
    '#bar': {
         observe: 'bar',
         afterUpdate: 'forceChange'
    },
    ...
},

forceChange: function(el) { jQuery(el).change() }
Run Code Online (Sandbox Code Playgroud)

小智 5

一个可能的hack(仅限版本0.6.3)将定义一个匹配所有元素的全局处理程序:

Backbone.Stickit.addHandler({
  selector: '*',
  afterUpdate: function($el) {
    $el.trigger('change');
  }
});
Run Code Online (Sandbox Code Playgroud)

由于处理程序与其他配套处理程序和绑定配置混合的顺序,他们的定义,你不能用afterUpdate在任何您绑定的,而不会覆盖这一全球性,全匹配的处理器,因为该绑定配置最后在被混合你可以在这里阅读更多相关信息.