gpt4 book ai didi

javascript - BackBone JS 事件可以调用匿名函数吗?

转载 作者:行者123 更新时间:2023-11-28 20:23:36 25 4
gpt4 key购买 nike

所以,假设我在模型上有一个事件监听器,如下所示:

this.listenTo(anotherModel, 'change:whatever', this.myMethod);

什么是 myMethod 是一个 super 简单的一行代码片段?我想在这种情况下使用匿名函数,但我似乎无法做到这一点。

this.listenTo(anotherModel, 'change:whatever', function() {
//The simplest code in the world
});

我能做什么?或者我的对象注定要充满单行方法?

最佳答案

绑定(bind)不需要访问 View 实例的匿名函数:

this.listenTo(anotherModel, 'change:whatever', function() {
console.log('whatever changed!');
});

绑定(bind)需要通过 ECMAScript 的 function.bind 访问 View 实例的匿名函数:

this.listenTo(anotherModel, 'change:whatever', function() {
this.$el.append('whatever changed');
}.bind(this)); //the .bind here is key!

...或者只传递第四个参数,Backbone 将为您绑定(bind)上下文

this.listenTo(anotherModel, 'change:whatever', function() {
this.$el.append('whatever changed');
}, this); //the this here is key!

就其值(value)而言,从技术上讲,您的普通 Backbone View “方法”是一个匿名函数:

Backbone.View.extend({someMethod: function() {/*this function is anonymous technically*/}});

一切都好。为了保持一致性,我总是将事件处理函数定义为 View 方法,并且通常清晰地命名它们:

Backbone.View.extend({
events: {'click .start', 'onClickStart'},
initialize: function () {
this.listenTo(this.model, 'change', this.onChange);
},
onClickStart: function() {/*awesome code here*/},
onChange: function() {/*more awesome code here*/}
});

请注意,这也有助于提高可测试性。

关于javascript - BackBone JS 事件可以调用匿名函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com