【发布时间】:2013-03-25 03:45:28
【问题描述】:
我有许多事件绑定到我的视图中的元素,但是当我使用stickit js 通过更改模型来更改视图中的值时,它不会触发onChange 事件。
有没有一种方法可以在模型中设置值之后触发当前模型的 onchange 事件:元素,而无需为每个绑定编写处理程序?这将适用于所有表单元素,输入/选择/文本区域。
我想避免对页面上的每个表单元素进行以下操作:
bindings: {
'#foo': {
observe: 'foo',
afterUpdate: 'forceChange'
},
'#bar': {
observe: 'bar',
afterUpdate: 'forceChange'
},
...
},
forceChange: function(el) { jQuery(el).change() }
【问题讨论】:
-
触发
onChange的什么?一个 DOM 元素?为什么你的代码不能直接连接到模型的change事件? -
您需要更具体一点:当您说“它不会触发 onChange 事件”时,您到底在做什么?您(或 Stickit 代码)是否在致电
yourModel.set(something)?如果是这样,它是否使用silent选项调用它,例如。yourModel.set(something, {silent:true})?如果没有,更改事件将被触发,因此要么您有另一个事件处理程序阻止它,要么set没有发生。 -
为歧义道歉。当我调用 model.set('foo', 'bar') 时,绑定到该模型项的 DOM 元素的值会发生变化,但不会触发 onchange 方法。我已经尝试过使用 jQuery('element').val('new value') 并且它也不会触发更改事件。我不是试图触发模型更改事件,而是触发 DOM 元素更改事件。
标签: backbone.js backbone-stickit