gpt4 book ai didi

javascript - 如何将函数发送给父级,然后在子级中使用它?

转载 作者:行者123 更新时间:2023-12-03 12:08:36 25 4
gpt4 key购买 nike

我正在尝试实现以下编码行为:

addAssetsTab(false, false, false).action = addAssetAction;

函数 addAssetsTab 将返回一个对象,其中包含一个名为 action 的函数,然后我想将该函数设置为当前范围内的某个函数,并且我希望子级在调用 action 后使用它。

var tabs = [];
addPeopleTab = function (filter, sort, viewModes) {
var promise = { action: function () { } };
tabs.push(
angular.extend({}, DataTemplates.headerContextualTab, {
id: 'people',
label: 'People',
classes: 'icon-group',
count: 0,
action: promise.action,
filter: filter,
sort: sort,
viewModes: viewModes
}))
return promise;
};

显然,由于某种原因,一旦我返回名为 Promise 的对象,对名为 Promise 的本地对象的引用就会丢失。我尝试返回一个函数,但引用也会丢失。关于如何执行此操作有什么想法吗?

最佳答案

问题不在于如何返回promise,或如何设置promise.action;这就是你如何将promise.action函数传递angular.extend;您正在传递函数引用,因此当您稍后更新 promise.action(指向新函数引用)时,您的扩展对象仍然指向旧的函数引用。

相反,你可以这样做;

angular.extend({}, DataTemplates.headerContextualTab, {
id: 'people',
label: 'People',
classes: 'icon-group',
count: 0,
action: function () {
return promise.action.apply(this, arguments);
},
filter: filter,
sort: sort,
viewModes: viewModes
}));

这样,由于它持有对 promise 的引用,因此它始终能够解析为 promise.action当前值>。使用Function.prototype.apply()允许您将传递给 action 方法的参数转发给 promise.action 方法。

关于javascript - 如何将函数发送给父级,然后在子级中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25065729/

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