2017-07-21 44 views
1

私は通常のMVCサーバーサイドのコーディングに慣れていて、今は角度を覚えようとしています。私は、ユーザーがサインインした競技にチームを追加できるユーザーインターフェイスを作りたいと思っています。私が使っているリストからチームを削除するには:リストから項目を削除する

angular.module('Xtho.InschrijfController', []) 
.controller("InschrCtrl", [ 
    '$scope', '$http', function ($scope, $http) { 
     $scope.model = {}; 
     $scope.wedstrijden = {}; 
     $scope.states = { 

     }; 

     $scope.new = { 
      ploeg: {} 
     }; 

     $http.get('/inschrijvingen/IndexVM').then(function (data) { 
      $scope.model = data; 
     }); 

     $scope.Vploeg = function (id, index) { 
      $http.post('/inschrijvingen/PloegVerwijderen', { id: id }).then(function (response) { 
       $scope.model.splice(index, 1); 
      }); 
     }; 

    } 
]); 

、これはビュー内にある:

<p>{{ploegen.PloegNaam}} <a href="#" ng-click="Vploeg(ploegen.PloegID, $index)"><span class="fa fa-trash-o" aria-hidden="true"></span></a></p> 

コード作品!ただし、レコードはデータベースから削除されるため、ページに表示されるリストには残ります。コンソールに次のエラーが表示されます。「n.model.spliceは関数ではありません」、この問題を解決する最善の方法は何ですか?

+0

$ http.getをあなたの投稿の後ろにある関数にリコールすることができます。 –

+0

'$ scope.model'はオブジェクトであり、配列ではありません。 '.splice'は配列プロトタイプの関数です。 'model'が本当にリストであれば、配列を使います。リストにオブジェクトを使用しないでください。 – Claies

答えて

0

このようなものです。我々は唯一の配列に対してsplice()を使用することができます

$scope.model.splice(index, 1); 

:あなたは$scope.model変数の一つの要素を削除しようとしている。この行で

angular.module('Xtho.InschrijfController', []) 
.controller("InschrCtrl", [ 
'$scope', '$http', function ($scope, $http) { 
    $scope.model = {}; 
    $scope.wedstrijden = {}; 
    $scope.states = { 

    }; 

    $scope.new = { 
     ploeg: {} 
    }; 

    $scope.load = function(){ 
     $http.get('/inschrijvingen/IndexVM').then(function (data) { 
      $scope.model = data; 
     }); 
    }; 
    $scope.load(); 

    $scope.Vploeg = function (id, index) { 
     $http.post('/inschrijvingen/PloegVerwijderen', { id: id 
    }).then(function (response) { 
      //$scope.model.splice(index, 1); 
      $scope.load(); 
     }); 
    }; 

} 
]); 
+0

はい、それは魅力のように動作します! :)) – user3482114

0
$scope.model=[]//list 
$scope.model={}//javascript object 

使用$ scope.model = []

0

、それは$scope.modelの配列ではない、あなたのコードでオブジェクトとして宣言されたようです:

$scope.model = {}; 

要素をスプライスしようとしているときに、$scope.modelの型がわからない。オブジェクトの場合は、IDで要素を削除することをお勧めします。

$scope.Vploeg = function (id, index) { 
    $scope.idForRemove = id; 
    $http.post('/inschrijvingen/PloegVerwijderen', { id: id }) 
    .then(function (response) { 
     delete $scope.model[$scope.idForRemove]; 
    }); 
    } 
} 
関連する問題