Удаление нескольких ключей на основе значения сохраненного поля
У меня есть несколько записей с уникальным идентификатором, которые я хочу удалить после того, как форма выполнила запись ajax. Предположим, у меня есть 5 записей в моем хранилище goinstant, общее поле - xkey, а значение в нем содержит 123 *. У меня вопрос, как я могу аккуратно удалить несколько ключей? Любые примеры были бы чрезвычайно полезны.
У Slukeheart есть правильный ответ с учетом наилучшей практики: я также нашел рабочее решение, но я даю правильный ответ Slukeheart. Это то, что я нашел работать в то же время, когда решение было опубликовано сегодня:
$.ajax({
url: './angtest',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ model: mymodelobj }),
success: function (result) {
//handleData(result);
//remove old record entries to prevent table bloat.
$scope.person = $goQuery('person', { xkey: @Html.Raw(json.Encode(ViewBag.xkey1)) }, { limit: 30 }).$sync();
$scope.person.$on('ready', function () {
var tokill = $scope.person.$omit();
angular.forEach(tokill, function(person,key) {
$scope.person.$key(key).$remove();
})
});
}
});
1 ответ
GoAngular и Angular используют обещания, которые обеспечивают эффективный способ управления асинхронными вызовами методов (например, key.$remove
). GoAngular использует библиотеку обещаний Q, а Angular использует подмножество Q, метко названное $ q.
Ниже я кратко подытожил удаление нескольких ключей с помощью общего ключа x, я также подготовил более подробный рабочий план.
angular
.module('TestThings', ['goangular'])
.config(function($goConnectionProvider) {
$goConnectionProvider.$set('https://goinstant.net/mattcreager/DingDong');
})
.controller('TestCtrl', function($scope, $goKey) {
var uid = 'xkey'; // This is created dynamically in the working example
// Create a collection or promises, each will be resolved once the associated key has been removed.
var removePromises = ['red', 'blue', 'green', 'purple', 'yellow'].map(function(color) {
return $goKey('colors/' + color + '/' + uid).$remove();
});
// Once all of the keys have been removed, we log out the destroyed keys
Q.all(removePromises).then(function(removedColors) {
removedColors.forEach(function(color) {
console.log('Removed color with key', color.context.key);
});
}).fail(function() {
console.log(arguments); // Called if a problem is encountered
});
});