2015-06-20 29 views
0

在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> 

我想我需要刷新我的控制器。但沒有任何工作。有什麼建議麼 ?

回答

1

在您的控制器,請嘗試移動

$state.go('contactLijst'); 

在函數內(數據){}函數。

僅當remove調用結束執行後,纔會將您重定向回主頁面。目前,控制器觸發刪除聯繫人的請求,然後立即將您路由回主頁面(由於JavaScript的異步特性)。

希望這會有所幫助!

+0

由於某種原因,我不能訪問$狀態參數了,如果我這樣做......甚至給它作爲參數在該功能不起作用:($狀態是undefined :( – Fosa

0

使用JavaScript Array splice()方法。

1

明白了! 改變了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');}); 

}}; 

問題解決了!