Я посмотрел и предположил, что это просто, но просто не мог понять документацию API для этого.Как я могу повторно создать контроллер AngularJS после изменения данных?
Предположим, у меня есть контроллер, который извлекает данные при первом вызове (я уезжаю из тонны, конечно):
myCtrl = function ($scope, Data) {
$scope.data = [];
data_promise = Data.getData(); //a $http service
data_promise.success(function (data) {
$scope.data = data;
});
}
Это прекрасно работает, и при загрузке страницы я получаю $ scope.data так как мне это нужно. Однако, конечно, пользователь может пожелать обновить данные. Предположим, простой сервис «Data.save()» вызывается, когда сервер нажимает кнопку «сохранить» в форме:
myApp.factory('Data', function ($http) {
save: function (data) {
$http({
method: 'POST',
url: 'someURL',
data: data,
}).success(function(){
//something here that might trigger the controller to refresh
});
};
});
Что бы я поставил в обратный вызов, который может повторно создать экземпляр контроллера таким образом, что имеет самые последние данные с сервера? В настоящее время мне нужно обновить страницу, чтобы получить обновленные данные. Сейчас я не беспокоюсь о минимизации запросов на сервер, обналичивая результаты и изменения. Мне просто нужно заставить это работать в первую очередь.
Спасибо!
Это грязно и на самом деле не работает для меня. Моя ошибка, пример был слишком упрощен. По правде говоря, у меня есть объект $ scope.allData, который (снова упрощен) является комбинированным результатом нескольких сервисов (Think $ q.all ([service1, service2, service3, ...]), затем (function ([result1 , result2, ...]) {много манипулирует});). Изменения в одном наборе данных требуют повторного вычисления комбинированного объекта. У меня даже есть несколько объектов, которые объединяют некоторые источники данных, но не все. – MyTimeFinder
Не могли бы вы объяснить, что вы подразумеваете под «использованием сервисов .. вы смотрите»? Есть ли способ посмотреть Data.save(), чтобы увидеть, вызвана ли она? Даже если я это сделаю, разве я еще не должен рассказывать ему что-то делать? Как сделать все остальные объекты области объектов без вызова какой-либо функции? – MyTimeFinder
Чтобы быть ясным, на самом деле у меня есть несколько объектов области видимости, которые нужно обновлять, когда пользователь обновляет один источник данных. Последующая обработка данных перед назначением объекту области не является тривиальной и включает в себя несколько объектов обещания. Похоже, что я вернусь к большей части функции контроллера в обратном вызове Data.save(). Success().Как вы сказали, это очень грязно. --Благодаря. – MyTimeFinder