В зависимости от вопроса, могут быть две ситуации.
После того как пользователь заполнил поля и нажал кнопку SAVE, которая, наконец, отправит запрос PATCH для сохранения // обновления значений.
Поскольку пользователь меняет значения, необходимо выполнить запрос.
Для 1.
Вы можете сохранить трек из того, что переодеться, поддерживая HashMap. Используйте директиву ng-modal
для всех полей ввода пользователя. Предположим, что есть два поля ввода i. username
и password
.
<input type="text" ng-modal="username" />
<input type="password" ng-modal="password" />
В контроллере
$scope.userInfo = {
user: $scope.username,
pass: $scope.password
};
Теперь, если что-то получает изменилось, это будет отражено в ваших взглядов и моделей с помощью двухстороннего связывания.
Итак, теперь вы можете сравнить старые и новые значения и соответственно отправить желаемые.
Для 2.
Использование Угловая-х watchCollection
.
scope.$watchCollection('[username, password]', function() {
// send a request
});
EDIT
Можно использовать метод дребезга для второго подхода
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
_.debounce = function(func, wait, immediate) {
var timeout, args, context, timestamp, result;
var later = function() {
var last = _.now() - timestamp;
if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
if (!timeout) context = args = null;
}
}
};
return function() {
context = this;
args = arguments;
timestamp = _.now();
var callNow = immediate && !timeout;
if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
context = args = null;
}
return result;
};
};
Источник: https://github.com/jashkenas/underscore/blob/master/underscore.js
угловой не имеет ничего строить в, за то, что вы просите – harishr
Я предполагаю, что ваши формы чрезвычайно велики, и есть причина того, что отправка всех данных не является опциональной.В этом случае вам придется написать свою собственную логику, чтобы определить, что изменилось, и отправлять только измененные данные в ваш POST. –
. У вас должен быть конечный объект для отправки, скажем, '$ scope.final_data' и в ваших формах вы должны использовать некоторые директивы, такие как 'ng-change', и всякий раз, когда вы меняли модель, добавьте ее в' final_data'. –