2015-12-15 2 views
0

Я пытаюсь загрузить функцию по ссылке, которая работает отлично. Тогда angularjs делает свою магию до тех пор, пока она не достигнет точки, где она показывает обратную связь с пользователем. Мне нужно обновить страницу после удаления элемента, но он просто не обновится.Angularjs refreshing after action same page

Вот мой HREF:

<a ng-click="deleteGroup(group.id)" target="_self"> 
<img src="img/deleteGroupIcon.png" width="45px"/></a> 

вот мой контроллер:

$scope.deleteGroup = function ($groupId) { 
    $http({ 
     method: 'POST', 
     url: apiUrl + 'group/delete', 
     data: {'groupId': $groupId}, // pass in data as strings 
     //headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     // set the headers so angular passing info as 
     // form data (not request payload) 
    }) 
    .success(function (data) { 
     if (!data.success) { 
      //$route.reload(); 
      alert('groep is verwijderd'); 
     } else { 
      $scope.group = data; 
      //$state.go('userDetail', {'user_id' : $userId}); 
     } 
    }); 
}; 

и мой HTML:

<div class="searchResults" ng-repeat="group in groups | searchForUser:searchString"> 
<div class="manageGroupWrapper"> 
    <a class="normal" href="#"> 
     <div class="newName h3"> 
      {{group.title}} 
     </div> 
     <div class="newProfile"> 
      <img ng-src="{{group.image}}" width="200px"/> 
     </div> 
     <div class="imageWrapper"> 
      <a ui-sref="add_group" class="editGroupIcon"><img src="img/editGroupIcon.png" width="50px"/></a> 
      <a ng-click="deleteGroup(group.id)" target="_self"><img src="img/deleteGroupIcon.png" width="45px"/></a> 
     </div> 
    </a> 
</div> 
+2

Почему вы хотите обновить страницу? Не могли бы вы дать нам больше вашего HTML-источника? Потому что, если вы используете 'ng-repeat', вы можете просто удалить группу, которую вы только что удалили из массива, который вы повторно повторяете, и не обновлять страницу таким образом. AngularJS будет обрабатывать привязку данных и удалять группу из представления. (обрабатывается ng-repeat) – leroydev

+1

Используете ли вы угловую маршрутизацию или обычные веб-страницы (есть ли символ # в ваших URL-адресах)? Отображается предупреждение? Обычно вы не должны перезагружать страницу в угловом приложении, просто обновляйте модель – valepu

+0

. Что об успешном завершении удаления в '$ timeout'. – Tomaltach

ответ

2

Ваша функция $ scope.deleteGroup должен удалить свою целевую группу из $ scope.groups, поэтому содержимое ng-repeat автоматически обновляется и не отображает группу anymor е.

$scope.deleteGroup = function (group) { 
    $http({ 
     method: 'POST', 
     url: apiUrl + 'group/delete', 
     data: {'groupId': group.$groupId}, // pass in data as strings 
     //headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     // set the headers so angular passing info as 
     // form data (not request payload) 
    }).success(function(data) { 
     $scope.groups.splice($scope.groups.indexOf(group)); 
    }); 
}; 
+0

Да, что прекрасно работает! благодаря –

0

Чтобы заставить обновить страницу с uiRouter вы можете использовать $state.go(target, params, {reload: true}).

$scope.deleteGroup = function (group) { 
    $http({ 
    method: 'POST', 
    url: apiUrl + 'group/delete', 
    data: {'groupId': group.groupId}, // pass in data as strings 
    //headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    // set the headers so angular passing info as 
    // form data (not request payload) 
    }).success(function(data) { 
    // This will reload the current state with the same stateParams 
    $state.go($state.current.name, $stateParams, {reload: true}); 
    }); 
};