gpt4 book ai didi

ember.js - 在 Ember 路由中,如何检查某个操作是否存在?

转载 作者:行者123 更新时间:2023-12-01 04:39:11 24 4
gpt4 key购买 nike

在组件中,为组件提供可选操作非常容易。在组件的 JS 中我可以写:

if (this.get('someAction')) {
this.sendAction('someAction');
}

在我的应用程序 route ,我有一个“通用操作”,它可以让我为小部件组件提供一长串操作,它看起来像这样:
genericAction: function(customActionName, customActionParams) {
this.send(customActionName, customActionParams);
}

出于各种原因(包括在某些组件中使用 genericAction 来触发测试可以订阅的操作,但该应用程序不一定在一些难以测试的异步/伪装工作流中使用)我更愿意检查该操作是否存在,即:
genericAction: function(customActionName, customActionParams) {
if (this.get(customActionName)) {
this.send(customActionName, customActionParams);
}
}

类似于在组件中的操作,但是这不起作用, this.controller.get(customActionName) 也不起作用.

除了保留一个硬编码的操作列表之外,我怎样才能做到这一点?

最佳答案

如果您将操作保存在 routes/application.js 文件本身中,那么代码将是

在 Ember 2.0 或更高版本中:

   if(Em.get(this.actions, actionName)) {
this.send(actionName);
}

在 Ember 1.13

this.actions 在 Ember 1.13 中未定义,你必须使用 this._actions
   if(Em.get(this._actions, actionName)) {
this.send(actionName);
}

如果您需要同时支持 Ember 1.x 和 2.x,请使用类似:
   let actions = this.actions || this._actions;
if(Em.get(actions, actionName)) {
this.send(actionName);
}

如果您将操作保留在应用程序 Controller ( Controller /application.js)中,那么 siva - abc 的答案效果很好。

关于ember.js - 在 Ember 路由中,如何检查某个操作是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392187/

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