YPC*_*ble 8 javascript backbone.js backbone-views
我有一个骨干视图,看起来像这样:
var myView = Backbone.view.extend({
events: {'click .myClass': 'myFunction'},
initialze: //initialize function,
render: //render function,
myFunction: function (e) {
//do something
}
});
Run Code Online (Sandbox Code Playgroud)
我想myFunction只做一次工作,然后停止被叫.我相信我可以使用主干once()方法来实现这一点,但无法弄明白.这是最好的方式,我该如何构建它?谢谢!
Gre*_*reg 13
只需替换您当前的定义:
myFunction: function(){....}
通过
myFunction: _.once(function(){....})
可以多次调用myFunction,但在第一次调用后它将是一个noop.
视图事件绑定使用,delegateEvents并使用jQuery的委托形式on.这意味着事件到处理程序映射是动态的,可以通过操作DOM来操作.例如,您可以这样做:
Backbone.View.extend({
events: {
'click .myClass.onlyOnce': 'doThings'
},
doThings: function(e) {
$(e.currentTarget).removeClass('onlyOnce');
//...
},
//...
});
Run Code Online (Sandbox Code Playgroud)
并确保该.myClass元素也有一个onlyOnce类.然后,当您第一次单击它时,它将匹配.myClass.onlyOnce,并且点击将被路由到doThings; doThings然后继续删除onlyOnce课程并做任何需要做的事情.随后点击.myClass将点击不匹配的内容,.myClass.onlyOnce因此doThings不会再次调用.
这种方法具有自我记录其行为的好处events.
演示:http://jsfiddle.net/ambiguous/7KJgT/
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |