Используемая мной структура (jQuery Mobile) прослушивает событие изменения текстовых полей для изменения разметки. Это код фреймворка, поэтому я не могу его изменить и включить правильные функции AngularJS.
Я привязываю текстовое поле к переменной области через ng-model. Когда переменная области видимости изменяется (и, следовательно, содержимое текстовой области, потому что оно связано), событие изменения javascript не запускается. Однако без события изменения jQuery Mobile не может изменить разметку.
Есть ли встроенный способ позволить Angular инициировать событие изменения без написания директивы? Если я использую директиву или ng-change, я должен добавить соответствующий код к каждому вхождению элемента textarea.
Краткий пример того, что я пытаюсь сделать (также доступен как 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>
Когда модель обновляется, событие изменения не запускается. Если вы вводите текстовое поле и щелкаете снаружи (базовое изменение текстового поля), срабатывает событие изменения.