gpt4 book ai didi

javascript - Zendesk 应用程序 : How to create Event listeners after app was initialised?

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

我目前正在开发一个将 brand_field_id 作为其参数之一的应用。它将保存“品牌”的自定义票据字段 ID。问题是:它不是必需的,因为用户可能想要或不使用它提供的功能。预期行为:

  • 如果此字段填充了 ID,则将在自定义字段上添加其 .change 的事件监听器(并且工作将完成);
  • 如果留空,则不会发生任何情况。这意味着用户选择不使用它。

Zendesk 已经为 Custom Ticket Field change event 提供了完美的监听器。 ,其工作原理如下(动态使用 brand_field_id):

events: {
"ticket.custom_field_ticket.custom_field_{{brand_field_id}}.changed": "myCustomFieldChangedFunction"
}

...aa如果brand_field_id为空时应用程序不会崩溃,那就太棒了。

由于我不希望应用程序在 brand_field_id 留空时崩溃,因此我想在添加事件监听器之前对其进行验证,但未能成功完成。我在 app.created 事件中尝试了以下代码的一些变体,但均不成功。

if(!_.isEmpty(this.setting('brand_field_id'))){
console.log('Brand change event added');
this.events['ticket.custom_field_ticket.custom_field_{{brand_field_id}}.changed'] = 'brandChangedHandler';
}

console.log 被触发,因此验证正常。不幸的是,该事件永远不会为自定义字段触发。

所以我的问题是:如何随时随地添加事件监听器?或者还有其他方法可以实现我的需求吗?

<小时/>

我什至posted about this in Zendesk's community在类似的线程上,但到目前为止还没有答案。我发现的解决方法实际上有效,但我不太喜欢它:

events: {
// [...]
'*.changed': 'anyFieldChangedHandler'
},
// [...]
anyFieldChangedHandler: function(e){
// If the changed field was {brand_field_id}
if(!_.isEmpty(this.setting('brand_field_id')) && e.propertyName === 'ticket.custom_field_'+ this.setting('brand_field_id')){
this.brandChangedHandler(e);
}
},

它太宽泛了,只要工单上的任何字段发生更改就会触发。我想找到一个更好、更干净、更优雅的解决方案。

最佳答案

我也有同样的想法,因为我知道找到与 Zendesk Apps 框架相关的答案是多么困难。

我会做这样的事情

events: {
"ticket.custom_field_ticket.custom_field_{{brand_field_id}}.changed":"itChanged"
},
itChanged: function(){
if(ticket.custom_field_ticket.custom_field_{{brand_field_id}} !== null && ticket.custom_field_ticket.custom_field_{{brand_field_id}} !== undefined){
//Your custom field exists and has a value. Do something with it.
}
else{
//Your custom field does not exist and/or does not have a value. do nothing
}
}

这样的东西适用于您的应用程序吗?我不确定这是否具有与 !_.isEmpty() 相同的功能,但您可以尝试一下。我在我的应用程序中经常使用它,有时只是作为一种安全措施,以防我的应用程序加载速度比实际票证快,这会导致某些值在应用程序加载时“未定义”。

希望这有帮助

关于javascript - Zendesk 应用程序 : How to create Event listeners after app was initialised?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459994/

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