从第三方原始javascript控制Angular JS元素

Control Angular JS element from a thirdparty raw javascript

本文关键字:Angular JS 元素 控制 javascript 第三方 原始      更新时间:2024-01-16

这是我第一次使用Angular JS构建的网站。我编写了第三方营销javascript标签,商家将其作为HTML中的最后一个元素加载到他们的网站上。JS标签只是在商家网站上查找元素,并获取数据或控制折扣代码表单

本质上,我希望我的外部加载JS标签能够自动设置折扣码输入字段的值,并触发点击表单旁边的按钮。这是商家网页上折扣码元素的HTML:

<div ng-if="BasketViewModel.ShowDiscountBox == true" class="ng-scope">
     <input class="form-control ng-pristine ng-invalid ng-invalid-required ng-touched" id="discountcode" ng-model="BasketViewModel.DiscountCode" type="text" ng-enter="applyDiscount(BasketViewModel.DiscountCode)" required="">
     <button id="addcode" class="btn btn-default ng-binding" type="button" ng-click="applyDiscount(BasketViewModel.DiscountCode)">Go!</button>
            </div>

在我的javascript中,我有;

document.getElementById('discountcode').value = '10OFF';
document.getElementById('addcode').click();

值"10OFF"似乎没有传递给按钮单击的处理程序。尽管如此,提交代码的Ajax请求(我不可见)还是将"null"作为输入值传递。

有没有一种方法可以通过编程方式输入代码,并在Angular JS之外由用户自己提交?

请帮忙——我是一名后端开发人员,对Angular一无所知,但我需要解决这个问题,让客户加入进来。

IMHO考虑到Angular/Non-Angular互操作的复杂性以及使用不同版本的Angular进行互操作的挑战,您正在进行一场失败的战斗。无论如何,请仔细阅读以下讨论:

https://stackoverflow.com/a/10508731/559095

即使你可以在低于1.3的angular版本中调用angular.element(document.getElementById…)并获得它的scope(),商家也需要启用angular调试,而且他们可能没有在生产中启用它。

即使它现在有效,当他们升级到Angular>=1.3时会发生什么?