1

AngularJS ビューから項目を削除しようとしています。ビューから、インデックスと ID を渡します。JS コントローラーで、AngularJS 配列/モデルからsplice(index)します。そして、ID を$http.getに渡して、データベースの削除を呼び出します。これはすべて機能します。

....

ページの更新をリクエストするまで。5 秒ごとに Angular モデルの更新をリクエストし、それに新しいデータを連結します。しかし、私が見つけたのは、それが私のインデックス値を台無しにしていることです。私はそれが私のインデックスを並べ替えていると思いました:そしてこのStackOverflowスレッドを読むことはそれを確認するのに役立ちました.

ページの 3 番目の項目の削除を押すと、DB からその ID が削除されます。しかし、ページを更新するまで、ページから間違ったアイテムをつなぎ合わせます。 常に正しいインデックスを渡すようにするにはどうすればよいですか?

意見

<li ng-repeat="new in news | filter:query | orderBy:orderProp">
     <div class="newsitem" id="newspost{{new.id}}">
         <h4 ng-model="news.title">{{new.title}} </h4>
         <p ng-model="news.text">{{new.text}}</p>
         <a class="btn btn-info" ng-click="visible = true">View article</a>
         <a ng-click="deleteNews(index,new.id)" class="btn btn-danger btn-mini">Delete</a>
     </div>
</li>

controllers.js

$scope.deleteNews = function(index, id) {
    $http.get('/ci/index.php/news/delete_news_ajax/'+id).success(function(){
        $scope.news.splice(index, 1);
    });
};
4

1 に答える 1

3

インデックスと ID を渡す代わりに、次を渡しnewます。

<a ng-click="deleteNews(new)" ...>

次にindexOf、コントローラー関数で使用します。

$scope.deleteNews = function(newsItem) {
   $http.get('/ci/index.php/news/delete_news_ajax/' + newsItem.id)).success(function() {
      $scope.news.splice($scope.news.indexOf(newsItem), 1);
   });
}
于 2013-03-19T21:02:04.020 に答える