当挖空更新值时不会触发更改事件
Change event doesn't trigger when Knockout updates value
我有一个外部JavaScript库,它会在文本区域的更改时触发,格式化它,等等。
但是,当 KnockoutJS 将值设置为文本区域时,不会触发更改事件。简化我的问题。当 Knockout 更新我的文本区域的值时,是否可以触发更改事件?
与其试图强制 Knockout 处理变更事件,不如在底层可观察量上设置订阅。 像这样:http://jsfiddle.net/EZC9E/1/
this.text.subscribe(function(newValue) {
alert('Text is changing to ' + newValue);
});
与其更改 javascript 库,不如考虑将其包装到自定义挖空绑定中。无论如何,您可能已经需要为库使用自定义绑定,尤其是在使用动态生成/销毁元素的任何foreach
绑定时。
获得自定义绑定后,您有一个非常方便的位置来触发"更改"。
ko.bindingHandlers.jQueryPluginFunctionCall = {
init: function (element, valueAccessor, allBindingsAccessor) {
// Apply jQuery plugin to textarea
$(element).jQueryPluginFunctionCall();
// Subscribe to the value binding of the textarea, and trigger the change event.
allBindingsAccessor().value.subscribe(function () {
$(element).trigger('change');
});
// Clean up jQuery plugin on dispose
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
// This will be called when the element is removed by Knockout or
// if some other part of your code calls ko.removeNode(element)
$(element).jQueryPluginFunctionCall('destroy');
});
}
}
相关文章:
- Angular JS根据搜索结果和点击事件更新DOM元素
- JavaScript 事件更新
- 输入字段未使用 ng-keydown 事件更新
- Angular.js-Socket.io事件更新模型,而不是视图
- 如何根据其他组件中的事件更新组件URL
- 如何使用输入模糊事件更新多个具有相同类名的标签的文本
- 使用 OnChange 事件更新状态具有延迟字符
- 具有新创建的行的 Javascript tr 单击事件(更新 css)
- onchange 事件更新状态,延迟为 1 个字符
- 输入 keydown,单击IE 7中的事件更新图像
- 如何使用来自另一个单元格的 onChange 事件更新一个单元格
- 为对事件更新文件的相同调用刷新浏览器缓存
- 在Backbone应用程序中使用keyup事件更新模型
- 如何使用图形API查询公共facebook事件?[更新的搜索]
- 在没有全局控制器的情况下从外部事件更新Ember.js数据
- javascript中的DropDownlist onchange事件更新面板中的DropDownlist没有触发
- Javascript/PHP事件更新注册按钮
- Getting Meteor 0.9.1.1点击事件更新对象
- 如何从Javascript事件更新ruby变量
- Backbone.js根据一个视图中的事件更新另一个视图