2016-04-04 5 views
0

Dies ist das erste Mal, dass ich mit einer Website in Angular JS gebaut arbeiten. Ich schreibe Drittanbieter-Marketing-JavaScript-Tags, die Händler auf ihrer Website als letztes Element im HTML laden. Das JS-Tag sucht einfach nach Elementen auf der Händlerseite und greift auf Daten zu oder übernimmt die Kontrolle über das Rabattcodeformular.Kontrolle Angular JS-Element von einem Dritten Roh-Javascript

Ich möchte, dass mein extern geladener JS-Tag den Wert des Rabattcode-Eingabefeldes automatisch einstellt und einen Klick auf die Schaltfläche neben dem Formular auslöst. Dies ist der HTML-Code für die Rabatt-Code Elemente auf der Händler-Webseite:

<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> 

In meinem Javascript, ich habe;

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

Es scheint, der Wert ‚10OFF‘ ist nicht für die Schaltfläche klicken, um die Handler übergeben zu werden. Die Ajax-Anfrage (die für mich nicht sichtbar ist), die den Code übermittelt, übergibt trotzdem den eingegebenen Wert als "null".

Gibt es eine Möglichkeit, den Code programmatisch einzugeben und im Auftrag des Benutzers außerhalb von Angular JS einzureichen?

Bitte helfen - Ich bin ein Back-End-Entwickler und habe keine Ahnung von Angular, aber ich muss dies aussortieren, um den Client an Bord zu bekommen.

Antwort

0

IMHO kämpfen Sie einen verlorenen Kampf angesichts der Komplikationen von Angular/Non-Angular Interop und die Herausforderungen dabei mit den verschiedenen Versionen von Angular. Auf jeden Fall lesen Sie diese Diskussion sorgfältig:

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

Auch wenn Sie angular.element (document.getElementById ...) nennen könnte und bekommen es ist Umfang() in Winkel Versionen niedriger als 1.3 Winkel debug benötigen vom Händler aktiviert werden, und sie haben es möglicherweise in der Produktion nicht aktiviert.

Und selbst wenn es jetzt funktioniert, was passiert, wenn sie auf Angular> = 1.3 upgraden?

Verwandte Themen