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

时间:2015-06-20 22:11:38

标签: javascript json angularjs html5 angularjs-ng-repeat

嗨新手在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>

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

3 个答案:

答案 0 :(得分:1)

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

$state.go('contactLijst');

在函数(data){}函数内部。

只有在删除调用完成后,才会将您重定向回主页面。目前,控制器会触发删除Contact的请求,然后立即将您返回主页面(由于JavaScript的异步特性)。

希望这有帮助!

答案 1 :(得分:1)

得到了!! 改变了两件事!

首先:

(function(){
    "use strict";

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

     function PersoonEditController(contact,people,$state){

但是当然我对很多人都有一个参数! “人民”参数。

所以现在是:

(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');});

 }};

解决了问题!

答案 2 :(得分:0)

使用JavaScript Array splice()方法。