ng-model löst keine change-Ereignis
Einem Rahmen, den ich verwende (jQuery Mobile) Listener für das change-Ereignis der Texteingabefelder zur änderung des Markups. Dies ist framework-code, so kann ich nicht ändern und mit dem richtigen AngularJS-Funktionen.
Bin ich verbindlich die textarea-Komponente, um eine scope-variable per ng-model. Wenn die scope-variable ändert (und damit die textarea-Inhalt, weil es gebunden ist) keine javascript-change-Ereignis ausgelöst wird. Allerdings ohne das change-Ereignis jQuery Mobile nicht ändern, die markup.
Gibt es eine vordefinierte Art und Weise zu lassen, Eckige auslösen des change-Ereignisses, ohne zu schreiben eine Richtlinie? Wenn ich eine Richtlinie oder ng-ändern muss ich hinzufügen der entsprechenden code, um jedes vorkommen eines textarea-element.
Kurzes Beispiel, was ich versuche zu tun, (auch als jsFiddle):
<div ng-app="app" ng-controller="Controller">
<textarea ng-model="textValue"></textarea>
</div>
<script type="text/javascript>
var module = angular.module("app",[]);
module.controller("Controller", function ($scope) {
$scope.textValue = "Test";
window.setInterval(function () {
$scope.textValue = $scope.textValue === "Test" ? "Hello World" : "Test";
$scope.$apply();
},2000);
});
//Dummy framework code which I do not have access to
document.querySelector("textarea").addEventListener("change", function () {
alert("changed");
});
</script>
Wenn das Modell aktualisiert, wird kein change-Ereignis ausgelöst wird. Wenn Sie geben Sie in das Textfeld, und klicken Sie außerhalb (ein einfaches textarea ändern), das change-Ereignis ausgelöst wird.
Nicht sicher, was Sie zu tun versuchen.
Ein wenig von Thema, aber ich kann einige Ratschläge. Wenn es irgendwie möglich ist, sollte nicht kombinieren, jQuery Mobile und AngularJS, Sie nicht nicht spielen sehr gut zusammen. Ich denke, Sie werden eine Menge Kopfschmerzen zu versuchen, um dies zu erreichen, ich spreche aus Erfahrung.
Das Projekt Einschränkungen verlangen eine Kombination von JQM und AngularJS das klappte soweit ganz gut. Ich war nur auf der Suche nach etwas "Magie" - Schalter ermöglicht das change-Ereignis der Vermehrung. Dieser Schalter scheint nicht zu existieren.
InformationsquelleAutor Marcus Krahl | 2014-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man "überschreiben" Ihre
ngModel
auslösen change-Ereignis manuell: AngularJS - gewusst wie: überschreiben der Richtlinie ngClickDEMO
alert
Das ist genau das, was ich suchte, denn er fügt den korrekten Verhaltens, ohne Sie zu berühren alle Teile des Codes
Beachten Sie, dass das auslösen eines Ereignisses führen können, zu mögliche Probleme mit der $digest-Zyklus... und Nekromantie
Eine kleine Frage hier: ist Dies eine Richtlinie, dass die Aktien des übergeordneten Bereichs-und wir sind das hinzufügen einer Uhr. Wenn es eine
ngIf
auf, dass die Richtlinie die HTML-Deklaration, die es verursacht werden, entfernt und wieder Hinzugefügt, mehrere Male, würde nicht das erstellen eines watch-leak? Alle Weg, kann man umgehen? Es gibt keine Richtlinie descructors soweit ich weiß...Ich denke, es ist kein Problem.
NgIf
(docs.angularjs.org/api/ng/directive/ngIf) die Richtlinie hat Vorrang: 600 die ausgeführt wird, bevor "unsere"NgModel
(Priorität:-1). Es bedeutet, dass der handler angefügt ist, um den Gültigkeitsbereich erstellt vonngIf
. WennngIf
entfernt den Rahmen, der hf ist auch zerstört, weil es angefügt an den Rahmen direktInformationsquelleAutor Khanh TO
warum spielst du nicht ng-change
auch verwenden, $Intervall
aber kann es nicht sein, zwei listners für das click-Ereignis??
Was click-Ereignis? Die Ereignis-listener für das change-Ereignis gebunden ist, die von jQuery Mobile.
Das change-Ereignis-handler definiert ist, die von jQuery Mobile. Ich kann ng-ändern weil ich mich nicht binden wollen, die anderen ändern-handler, sondern Auslöser der bestehenden change-handler. Deshalb ist Ihre Antwort, obwohl gut geschrieben, eignet sich nicht für die Frage
InformationsquelleAutor harishr
AddEventListener wird eine native, nicht ein jquery ein. Auch die ng-model überschreibt das change-Ereignis, besonders, wenn das change-Ereignis wird native.
Wenn Sie verwenden möchten ngModel und hören sich auch die change-Ereignisse, Verwendung: https://docs.angularjs.org/api/ng/directive/ngChange (Vorsicht: diese Richtlinie VERLANGT, dass ngModel)
InformationsquelleAutor Luis Masuelli