0

私はテスト配列を持つコントローラを持っています。それに2つのオブジェクトを追加しました。 html ng-clickからdelete関数を呼び出すと、配列はDOMでは更新されませんが、配列がjsコードでスプライスされていることがわかります。私は$ apply()を試しましたが、既に適用されているので、それは動作しません。配列のスプライス後に角が更新されない

app.controller('HomeCtrl', ['$rootScope', '$scope', function($rootScope, $scope) { 

    var person1 = {firstName:"John", lastName:"Doe", age:46}; 
    var person2 = {firstName:"Joe", lastName:"Horn", age:66}; 
    $scope.test = []; 
    $scope.test.push(person1); 
    $scope.test.push(person2); 

    $scope.deletePost = function(value, post){  
      $scope.test.splice(0, 1); 
    } 
}]); 

HTML:あなたのコントローラが付属している要素内

<div class="row" ng-controller="HomeCtrl"> 
<div ng-repeat="tes in test">{{tes.age}}<br></div> 
</div> 
<a data-toggle="modal" ng-click="deletePost(value, post)" data-target="#deleteModal" ng-show="post.user.email == user.email" style="font-size:15px;margin-left: 1rem;" class="card-link" href="javascript:void(0)">Delete</a> 
+0

あなたはdeletePostメソッドを呼び出すにはどうすればよいですか? – Vincismique

+0

@Vincismiqueは今すぐ投稿されました。 – shashank

+0

は "deletate"となっている "initiateDelete"ですか? – mjabraham

答えて

0

移動<a>

<div class="row" ng-controller="HomeCtrl"> 
<div ng-repeat="tes in test">{{tes.age}}<br></div> 
<a data-toggle="modal" ng-click="deletePost(post, value)" data-target="#deleteModal" ng-show="post.user.email == user.email" style="font-size:15px;margin-left: 1rem;" class="card-link" href="javascript:void(0)">Delete</a> 
</div> 
1

domを再配置する必要があります。また、インデックスに基づいてスプライスする必要があります。

試してみてください。

DOM:

<div class="row" ng-controller="HomeCtrl"> 
<div ng-repeat="tes in test track by $index">{{tes.age}}<br></div> 
<a data-toggle="modal" ng-click="deletePost($index, tes)" data-target="#deleteModal" ng-show="post.user.email == user.email" style="font-size:15px;margin-left: 1rem;" class="card-link" href="javascript:void(0)">Delete</a> 
</div> 

はコントローラー:

app.controller('HomeCtrl', ['$rootScope', '$scope', function($rootScope, $scope) { 

    $scope.test = [{firstName:"John", lastName:"Doe", age:46}, {firstName:"Joe", lastName:"Horn", age:66}]; 

    $scope.deletePost = function(ind, post){  
      $scope.test.splice(ind, 1); 
    } 
}]); 
関連する問題