В следующем коде Angular 1.7.5 я подключаю текстовое поле к определенному полю контроллера с помощью ng-model
и использую $doCheck
, чтобы что-то делать при каждом изменении значения.Обратите внимание, что в моем реальном проекте значение, которое я наблюдаю, является объектом, и мне нужно выяснять всякий раз, когда изменяется любое из его полей, поэтому я должен использовать $doCheck
.Я знаю, что это избыточно для текстового поля.
HTML
<div ng-app="app" ng-controller="TheController as ctrl">
<input ng-model="ctrl.value" />
</div>
JS
angular.module("app", [])
.controller("TheController",
class TheController
{
constructor()
{
this.value = "";
}
$doCheck()
{
console.log("check: " + this.value);
}
}
);
Всякий раз, когда значение в текстовом поле изменяется, вы можете видеть, что $doCheck
вызывается дважды (оба раза с новым значением).Почему это?Как я могу отфильтровать "бессмысленные" $doCheck
вызовы и просто получить те, где значение действительно изменилось?