gpt4 book ai didi

javascript - 在 backbone.js 中通过 trigger() 传递的参数之上传递参数

转载 作者:行者123 更新时间:2023-11-30 16:50:33 25 4
gpt4 key购买 nike

我有一个方法可以在 Backbone 的嵌套 View 中传递参数,如下所示:

page.get('condition') ? this.trigger('someEvent', object) : this.trigger('someOtherEvent', object);

据我了解,此代码会将对象传递给“someEvent”或“someOtherEvent”,作为该事件的监听器中指定的回调的第一个参数。

我的监听器(在父 View 文件中)看起来像:

this.parentView.on('someEvent', this.someFunction('extraArgument'), this);

默认情况下,如果第二个参数只是this.someFunction,我假设该函数的第一个参数是object。我的问题是,除了隐式传递的对象之外,我还想传递“extraArgument”。

因此,我构造了 this.someFunction 的签名,如下所示:

someFunction: function(object, extraArg) {
...
}

但是,函数中的调试语句显示 object 实际上是我手动传递的 extraArgument,而 extraArg 在函数的范围。如何传递 extraArgument 而不覆盖从 subview 传递的参数?

最佳答案

当你这样说时:

this.parentView.on('someEvent', this.someFunction('extraArgument'), this);

当构建 this.parentView.on 的参数列表时,您正在调用 this.someFunction。然后无论 this.someFunction('extraArgument') 返回什么都被绑定(bind)为 'someEvent' 事件的回调。您的 someFunction 可能不会返回函数,因此此 on 调用不会做任何有用的事情。

听起来您想对 this.someFunction 进行部分求值,以便创建一个类似于 this.someFunction 的新函数,但第一个参数始终是 '额外参数'。下划线优惠_.partial为此目的:

partial _.partial(function, *arguments)

Partially apply a function by filling in any number of its arguments, without changing its dynamic this value.

所以你会说:

this.parentView.on(
'someEvent',
_(this.someFunction).partial('extraArgument'),
this
);

您还可以使用 _.bind为此,如果您想一路设置 this

关于javascript - 在 backbone.js 中通过 trigger() 传递的参数之上传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585643/

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