我正在使用的框架(jQuery Mobile)监听文本区域的更改事件以更改标记。这是框架代码,因此我无法更改它并包含正确的AngularJS函数。
我通过ng-model将文本区域绑定到作用域变量。当作用域变量更改(因此文本区域内容也会更改,因为它已绑定),没有触发任何JavaScript更改事件。但是,如果没有更改事件,jQuery Mobile无法更改标记。
是否有内置方法可以让Angular触发更改事件而无需编写指令?如果我使用指令或ng-change,则必须将相应的代码添加到每个文本区域元素的出现中。
我尝试做的简短示例(也可在jsFiddle中找到):
我通过ng-model将文本区域绑定到作用域变量。当作用域变量更改(因此文本区域内容也会更改,因为它已绑定),没有触发任何JavaScript更改事件。但是,如果没有更改事件,jQuery Mobile无法更改标记。
是否有内置方法可以让Angular触发更改事件而无需编写指令?如果我使用指令或ng-change,则必须将相应的代码添加到每个文本区域元素的出现中。
我尝试做的简短示例(也可在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>
当模型更新时,不会触发任何更改事件。如果您在文本区域中输入并单击外部(基本文本区域更改),则会触发更改事件。