Zendesk应用程序:如何在应用程序初始化后创建事件监听器?

时间:2015-05-26 13:28:57

标签: javascript events frameworks zendesk

我目前正在处理一个以SWIG_CGAL/Mesh_3/CGAL_Mesh_3.i作为其中一个参数的应用。它将保存“品牌”的自定义票证字段ID。问题是:不是,因为用户可能想要或不想使用它提供的功能。预期的行为:

  • 如果此字段填充了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

它过于宽泛,只要在故障单上更改任何字段,就会触发。我想找到一个更好,更清洁,更优雅的解决方案。

1 个答案:

答案 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()相同的功能,但您可以尝试一下。我在我的应用程序中经常使用这个作为一个安全的警卫,因为我的应用程序加载速度比实际票证更快,这导致某些值为"未定义"在应用程序加载时。

希望这有帮助