由代码操作输入时不触发主干视图更改事件

Backbone view change event not firing when input manipulated by code

本文关键字:视图 事件 操作 代码 输入      更新时间:2023-09-26

在我的骨干模型的视图中,我有:

events: {
    'change textarea' : 'changeContentTextarea',
    ...

当用户在文本区域中手动输入文本时,它会触发并执行以下操作:

    this.model.set('content', this.$el.find('textarea').val());

但是当程序中的内容被更改时(使用jQuery),它不会触发:

    txtarea.val(finalText);

因此,模型的属性不会更新,只有文本区域中的文本会更改。

是否有任何事件可以绑定来解决此问题?或者,在使用 jQuery 更改内容后如何触发事件?

来自 https://api.jquery.com/change/

注意:使用 JavaScript 更改输入元素的值,例如使用 .val(),不会触发事件。

所以你必须自己触发change事件

$("textarea").val(finalText).trigger("change");

下面的答案是正确的,只有当你需要知道事件是由用户还是由JS触发时,你才能这样做:

$("textarea").val(finalText).trigger("customChange");

并像这样定义侦听事件:

events: {
     'customChange textarea' : 'doSomethingWithJSEvent',