Angular没有监听jQuery触发事件,反之亦然

时间:2018-02-16 11:16:28

标签: javascript jquery angular typescript

Angular5 @最新的这里,我有几个组件使用几个javascript与jQuery插件,我需要它们,但是当dom被这样的插件修改时,角度绑定不会更新它们的值,反之亦然。当通过角度变量的变化修改dom时,会发生同样的事情。

我想出了这个粗略的解决方案:

$('*').each(function()
{
  $(this).on("change",
  (event)=>
  {
    event.preventDefault();
    event.stopPropagation();
    if(event.detail!=="ng")
    {setTimeout(()=>{this.dispatchEvent(new CustomEvent("change", {detail: "ng"}));},0);}
  });
});

由于某些原因,使用trigger()触发的事件仅在jQuery中侦听,但使用dispatchEvent()触发的事件都由两者监听。

反过来说,我发现没有什么能比手动触发特定事件更好:

  jq_update()
  {
    $('.select-chosen').each(function(){setTimeout(()=>{$(this).trigger("chosen:updated", true, true);}, 0)});
    $('.datepicker').each(function(){setTimeout(()=>{$(this).trigger("oninput", true, true);}, 0)});
  }

这些问题有更好的解决方案吗?使用ChangeDetectorRef和Zone绝对没有,我想知道为什么......

0 个答案:

没有答案