按钮Onclick事件和backbone.js视图

时间:2012-05-21 02:44:37

标签: javascript backbone.js backbone-views backbone-events

我目前有一个包含以下内容的html文件:

<div class="button1">

    <button class="first" id="up" onclick="tranistionUp">
       Go Up
    </button>

    <button class="last" id="down" onclick="tranistionDown">
       Go Down
    </button>
</div>

我在backbone.js视图文件中有以下内容:

var BlahView = BackBone.View.extend({
  initialize:function(){},
  blah...
  blah...
 transitionUp: function(){
    blah...
 },
 tranistionDown: function(){
},
render:function (){
    blah....
}; 
});

当我点击按钮时,我发现这两个功能都有一个未定义的功能错误,我是骨干的新手,任何帮助都会很棒。

1 个答案:

答案 0 :(得分:24)

您应该在Backbone.View

中设置事件处理程序

HTML(将id="myButtons"添加到容器div

<div class="button1" id="myButtons">
  <button class="first" class="button-up">Go Up</button>
  <button class="last" class="button-down">Go Down</button>
</div>

JavaScript(已添加events

var BlahView = Backbone.View.extend({

  events: {
    "click .button-up": "transitionUp",
    "click .button-down": "tranistionDown",
  },

  transitionUp: function() {
    console.log("Transition up");
  },

  tranistionDown: function() {
    console.log("Transition down")
  }

});

var blahView = new BlahView({ el: $('#myButtons') });

通过指定onclick属性,您的浏览器需要在全局范围内使用名为transitionUptransitionDown的函数。您的方法在对象中定义。通常不鼓励使用HTML属性绑定事件处理程序,尤其是在使用Backbone时(因为您无法轻松地将事件绑定到视图的特定实例)。