Создаю новую запись, эта запись успешно добавлена в базу данных. Это хорошо. Но проблема в том, что он не обновляет список существующих записей - значит, функция push
не работает.AngularJS не вставляет новую запись в массив
Это внутри контроллера:
$scope.posts = Posts.query();
...
$scope.saveForm = function(post) {
var p = new Post(post);
p.$save(function (response) {
$scope.posts.push(angular.extend(p, response.id));
console.log('saved');
console.log(response.id);
});
};
Я пытался использовать только push()
без angular.extend()
, также пытался добавить $scope.posts = Posts.query();
в конце контроллера, но это не помогло - новый рекорд по-прежнему не добавляется в текущий список сообщений.
Что может быть причиной этого? Здесь я нашел похожие темы, но это не помогло мне решить эту проблему.
спасибо.
EDIT: Я вижу в console.log($scope.posts);
новый пост, он просто не отображается в списке сообщений.
EDIT2: Я попытался также $scope.$apply();
после команды push
, но это привело к этому сообщению об ошибке:
Error: [$rootScope:inprog] $digest already in progress
EDIT3: я узнал, что, когда я пытаюсь удалить записи, список также не обновляется (только после обновления).
EDIT4: Когда я добавить новую запись, в JS этот вывод (новая запись, правильно сохранены, просто не обновляется в списке, где находятся все элементы):
Resource {id: Object, title: "hohohohooho", body: null, starred: null, created_at: "2015-10-27T04:00:06.943Z"…}
ID
доступен как response.id.$oid
.
не должен быть расширением 'angular.extend (p, {id: response.id})'? – charlietfl
вам нужно предоставить больше кода. Угловое использует стандартный js-массив push, и он работает достаточно хорошо. –
перед тем, как нажимать o расширенный номер p в сообщениях, войдите, чтобы узнать, что напечатано p –