onSet函数不会在div上被触发

时间:2015-01-05 02:24:35

标签: javascript jquery backbone.js backbone-stickit

我正在堆叠如何通过自定义事件触发stick事件。

在下面的代码中,colorChange事件正常发生,所有绑定(stickit)事件也正常工作,但onSet事件。

有人可以指出错误的地方吗?

bindings: {
  '#color1': {
    observe: 'color1',
    update : function($el,val){
      $el.css("background-color",val);
    },
    onSet : function(){
    //never get fired
    },
    events : ["colorChange"]
  }
}

events : {
  "colorChange" : function(){
    //the event is occurring
  }
}

//somewhere

$("#color1").trigger("colorChange");

<!-- in the html -->
<div id="color1"></div>

3 个答案:

答案 0 :(得分:1)

Stickit在表单元素上使用双向绑定,即输入,textarea,输入[type = checkbox],输入[type = radio],选择;对于其他一切StickIt都采用单向绑定。

您应该在表单元素上指定 color1 id。

答案 1 :(得分:0)

虽然我找到了一种方法可以做到这一点,但这有点过时了。

stickit 2way绑定仅适用于表格元素和{@ 1}}之类的元素,如@mavarazy所述。

在致电contenteditable="true"之前,将div设置为stickit()

<div contenteditable="true"></div>

删除属性,初始化后不要让它成为真正的可编辑元素 它现在可以作为2路绑定。

答案 2 :(得分:0)

我知道它已经晚了但它可以帮助别人。更简单的方法是添加updateModel: true

bindings: {
  '#color1': {
    observe: 'color1',
    update : function($el,val){
      $el.css("background-color",val);
    },
    onSet : function(){
    //gets the event
    },
    updateModel: true,
    events : ["colorChange"]
  }
}