我目前正在处理一个以SWIG_CGAL/Mesh_3/CGAL_Mesh_3.i
作为其中一个参数的应用。它将保存“品牌”的自定义票证字段ID。问题是:不是,因为用户可能想要或不想使用它提供的功能。预期的行为:
brand_field_id
的事件侦听器(并且会完成这些操作); Zendesk已经为Custom Ticket Field change event提供了完美的监听器,其工作原理如下(动态使用.change
):
brand_field_id
... aaand如果应用在events: {
"ticket.custom_field_ticket.custom_field_{{brand_field_id}}.changed": "myCustomFieldChangedFunction"
}
为空时没有崩溃,那真的很棒。
因为如果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';
}
被解雇,因此验证正常。不幸的是,事件永远不会触发自定义字段。
所以我的问题是:如何在旅途中添加事件监听器 ?还是有另一种方法来实现我的需要吗?
我甚至在类似的帖子上posted about this in Zendesk's community但到目前为止还没有答案。 解决方法我发现实际上工作,但我不是很喜欢它:
console.log
它过于宽泛,只要在故障单上更改任何字段,就会触发。我想找到一个更好,更清洁,更优雅的解决方案。
答案 0 :(得分:0)
我在同一条船上,因为我知道找到与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()
相同的功能,但您可以尝试一下。我在我的应用程序中经常使用这个作为一个安全的警卫,因为我的应用程序加载速度比实际票证更快,这导致某些值为"未定义"在应用程序加载时。
希望这有帮助