当代码操作输入时,骨干视图更改事件不会触发

时间:2016-02-29 09:27:28

标签: javascript jquery backbone.js

在我的Backbone模型中我有:

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

当用户手动将文本输入textarea时,它会触发并执行此操作:

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

但是当程序中的内容发生变化时(使用jQuery),它不会触发:

    txtarea.val(finalText);

因此模型的属性不会更新,只有textarea中的文本会发生变化。

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

2 个答案:

答案 0 :(得分:2)

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

  

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

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

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

答案 1 :(得分:1)

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

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

并定义类似的listen事件:

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