在用Angularjs删除后刷新联系人列表

问题描述:

在AngularJs中的新手。在用Angularjs删除后刷新联系人列表

我想按联系人详细信息屏幕中的删除按钮。 直接后来,当按下删除按钮时,我想返回到主联系人列表并刷新联系人列表。 (删除刚删除的联系人)。

现在暂时接触被删除......但是,如果我去运行功能

$state.go('contactLijst'); 

这将返回到主画面......但后来我还是要刷新页面!

这里是我的控制器:

(function(){ 
    "use strict"; 

    angular 
     .module("lesAmis") 
     .controller("PersoonEditController", 
     ["contact","$state", 
     PersoonEditController]); 

    function PersoonEditController(contact,people,$state){ 
     var vm = this; 
     vm.people = people; 
     vm.contact = contact; 

vm.delete = function(){ 
       var id = vm.contact.id; 
       if (id) { 
       vm.contact.$delete({id:id}, function(data) { 
       toastr.success("OK, persoon verwijderd <br />" + 
        data.naam);}); 

       $state.go('contactLijst');} 

     }; 

我app.js

.state("persoonEdit", { 
        abstract: true, 
        url: "/personen/edit/:id", 
        templateUrl: "app/contacten/contactEditView.html", 
        controller: "PersoonEditController as vm", 
        resolve:{ 
         contactResource: "contactResource", 
         contact: function(contactResource, $stateParams){ 
          var id = $stateParams.id; 
          return contactResource.get({id: id}).$promise; 
         } 
        } 
       }) 

按钮,在HTML:

button class="btn btn-default" 
          style="width:70px;" 
          ng-click="vm.delete()">Verwijder 
        </button> 

我想我需要刷新我的控制器。但没有任何工作。有什么建议么 ?

在您的控制器,请尝试移动

$state.go('contactLijst'); 

在函数内(数据){}函数。

仅当remove调用结束执行后,才会将您重定向回主页面。目前,控制器触发删除联系人的请求,然后立即将您路由回主页面(由于JavaScript的异步特性)。

希望这会有所帮助!

+0

由于某种原因,我不能访问$状态参数了,如果我这样做......甚至给它作为参数在该功能不起作用:($状态是undefined :( – Fosa

使用JavaScript Array splice()方法。

明白了! 改变了2件事!

有了这个第一:

(function(){ 
    "use strict"; 

    angular 
     .module("lesAmis") 
     .controller("PersoonEditController", 
     ["contact","$state", 
     PersoonEditController]); 

    function PersoonEditController(contact,people,$state){ 

但ofcourse我有一个参数提供给许多! '人'参数。

所以现在是:

(function(){ 
    "use strict"; 

    angular 
     .module("lesAmis") 
     .controller("PersoonEditController", 
     ["contact","$state", 
     PersoonEditController]); 

    function PersoonEditController(contact, $state){ 

现在我删除功能,需要一个特殊的命令!这是$state.reload();

这里我的新删除功能:

vm.delete = function(){ 
     var id = vm.contact.id; 
     if (id) { 
     vm.contact.$delete({id:id}, function(data) { 
      $state.reload(); 
      toastr.success("OK, persoon verwijderd"); 
      $state.go('contactLijst');}); 

}}; 

问题解决了!