javascript - 使用 angularjs 调用普通 javascript

标签 javascript angularjs cdata

我正在尝试将用于联属营销跟踪的旧版 JavaScript 代码包含到 angularjs 应用程序中

<script type="text/javascript">
        //<![CDATA[ 

        /*** Do not change ***/
        var AWIN = {};
        AWIN.Tracking = {};
        AWIN.Tracking.Sale = {};

        /*** Set your transaction parameters ***/
        AWIN.Tracking.Sale.amount = '{{order_total}}';
        AWIN.Tracking.Sale.orderRef = '{(order_id}}';
        AWIN.Tracking.Sale.parts = '{{cats}}';
        AWIN.Tracking.Sale.voucher = '';
        AWIN.Tracking.Sale.currency = 'GBP';
        AWIN.Tracking.Sale.test = '0';
        AWIN.Tracking.Sale.channel = 'aw';
        //]]>
    </script>

我需要调用上面的代码(用 angualr 变量填充占位符),然后调用:

    <script src="https://www.dwin1.com/xxxx.js" type="text/javascript" defer="defer"></script>

执行此操作的最佳方法是什么?我尝试将代码放入 Angular 函数中,但没有成功。我还尝试将变量传递到 $window 中,并尝试将它们插入到 CDATA 中,但没有成功。有什么想法吗?

<小时/>

我应该将此代码添加到包含在 angualrjs Controller 中的 HTML 页面中

最佳答案

您所尝试的操作无法直接使用 angularjs 实现。你需要做如下的事情

//Note: this is a new JS file included in your main html

(function() {
    "use strict";

    window.AWIN = {};

    window.populateAwin = function(args) {
        //<![CDATA[ 

        /*** Do not change ***/
        AWIN.Tracking = {};
        AWIN.Tracking.Sale = {};

        /*** Set your transaction parameters ***/
        AWIN.Tracking.Sale.amount = args.order_total;
        AWIN.Tracking.Sale.orderRef = args.order_id;
        AWIN.Tracking.Sale.parts = args.cats;
        AWIN.Tracking.Sale.voucher = '';
        AWIN.Tracking.Sale.currency = 'GBP';
        AWIN.Tracking.Sale.test = '0';
        AWIN.Tracking.Sale.channel = 'aw';
        //]]>
    }

}());

然后,您需要通过传递所需数据从 Controller 调用此函数,如下所示

populateAwin({
   order_total: $scope.order_total,
   order_id: $scope.order_id,
   cats: $scope.cats
});

完成此操作后,您可以继续从 Controller 动态包含脚本,如下所示

var scriptEl = document.createElement("script");
scriptEl.type = "text/javascript";
scriptEl.defer = "defer";
scriptEl.src = "https://www.dwin1.com/xxxx.js";

document.body.appendChild(scriptEl);

关于javascript - 使用 angularjs 调用普通 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313284/

相关文章:

javascript - jQuery 验证至少选择一个复选框

javascript - JQuery/Javascript 添加 "id"到一个 <div> where class ="x"

javascript - 获取 Puppeteer 中 XPath 的所有链接(暂停或不起作用)?

javascript - jQuery 获取多个属性

xml - &lt;![CDATA[&lt;![CDATA[some text]]]]>&lt;![CDATA[>]]> 在 XML 中是什么意思?

xml - 为什么 XML 中的 CDATA 语法看起来很奇怪?

javascript - 使用模态窗口实例在 Angular JS 中保存并下一步

javascript - 为什么传递给 Controller ​​函数后值是 "Undefined"

css - 部分页面未正确呈现 css 类

xml - 我如何拆分 <xsl :foreach> into multiple parts?