Предположим, я хотел сделать что-то вроде автоматического запуска некоторого кода (например, сохранения данных на сервер) при изменении значений модели. Есть ли единственный способ сделать это, установив что-то подобное ng-change
для каждого элемента управления, который мог бы изменить модель?
То есть, с представлениями все меняется сразу же, как и модель, без необходимости явно что-либо подключать. Есть ли аналог возможности запускать код, который сохраняет на сервере? Что-то вроде
myModel.on('change', function() {
$.post("/my-url", ...);
});
как вы могли бы видеть с чем-то вроде позвоночника.
источник
ng-change
хуков на элементах управления вводом лучшей идеей?И если вам нужно динамически стилизовать элементы формы в соответствии с их состоянием (изменено / не изменено) или проверить, действительно ли изменились некоторые значения, вы можете использовать следующий модуль, разработанный мной: https://github.com/betsol / угловой-ввод-изменен
Он добавляет к форме и ее дочерним элементам дополнительные свойства и методы. С его помощью вы можете проверить, содержит ли какой-либо элемент новые данные или даже проверить, есть ли новые несохраненные данные во всей форме.
Вы можете настроить следующие часы:
$scope.$watch('myForm.modified', handler)
и ваш обработчик будет вызываться, если некоторые элементы формы действительно содержат новые данные или если он вернулся в исходное состояние.Кроме того, вы можете использовать
modified
свойство отдельных элементов формы, чтобы фактически уменьшить объем данных, отправляемых на сервер через вызов AJAX. Нет необходимости отправлять неизмененные данные.В качестве бонуса вы можете вернуть форму в исходное состояние с помощью вызова
reset()
метода формы .Вы можете найти демонстрацию модуля здесь: http://plnkr.co/edit/g2MDXv81OOBuGo6ORvdt?p=preview
Ура!
источник
<form name="myForm">
,<button ng-click="vm.doSomething(myForm)">
.FormController
кdoSomething()
функции вашего контроллера. Вы можете делать с ним все, что хотите, внутри этой функции, например, проверять, действительно ли форма изменена, проверяяFormController.modified
логическое свойство.