3

我目前有一个包含以下内容的 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>

我在一个主干.js 视图文件中有以下内容:

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

当我单击按钮时,我看到两个函数的未定义函数错误,我是新来的主干任何帮助都会很棒。

4

1 回答 1

25

您应该在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期望在全局范围内调用函数。您的方法在对象中定义。通常不鼓励使用 HTML 属性绑定事件处理程序,尤其是在您使用 Backbone 时(因为您无法轻松地将事件绑定到视图的特定实例)。transitionUptransitionDown

于 2012-05-21T04:17:28.887 回答