将外部脚本与angularjs中的参数集成

时间:2013-08-19 15:55:45

标签: angularjs lazy-loading

我正在尝试在我的AngularJS应用程序中集成intercom.io。

脚本在完全加载之前有一些要配置的参数:

<script id="IntercomSettingsScriptTag">
  window.intercomSettings = {
    // TODO: The current logged in user's email address.
    email: "john.doe@example.com",
    // TODO: The current logged in user's sign-up date as a Unix timestamp.
    created_at: 1234567890,
    app_id: "95b20cd5364bab3a2136e252d2862b8136aabe7e"
  };
</script>
<!-- Init script -->
<script>(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://static.intercomcdn.com/intercom.v1.js';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}};})()</script>

我尝试使用{{data.email}}替换电子邮件但不幸的是,init脚本在intercomSettings之前加载。 ng-cloak对我来说不是很有用,因为它仅用于演示目的。

我不确定我应该朝哪个方向寻找。 要测试我的代码:http://plnkr.co/edit/2PJNLukBx0cTOPZXNwqs?p=preview

如果有效,你应该在窗口右下方出现一个小问号。

2 个答案:

答案 0 :(得分:2)

我不确定您是否已找到解决方案,但您应该看一下:

https://github.com/maxiperezc/angular-intercom 它基本上将内部通信脚本包装成angular,因此您可以在应用程序中使用指令。

这是https://github.com/gdi2290/angular-intercom的改进版本 - 他们删除了一些不必要的代码

答案 1 :(得分:0)

如果您仍然感兴趣,我会将角度对讲更新到最新的对讲机api。通过更好的方式处理异步脚本加载,为用户简化了该服务 https://github.com/gdi2290/angular-intercom