获取正确的索引与接头()(Get correct index with Splice())

2019-10-17 20:19发布

我试图删除我AngularJS视图中的项目。 从视图中,我传递的索引和标识。 在JS控制器,I 拼接从AngularJS阵列/模型(索引)。 而我通过ID为$ http.get调用删除对我的数据库。 这所有的作品。

....

我使刷新我的网页的请求。 每5秒我做更新角模型的请求,我Concat的任何新数据给它。 但是,我发现是搞砸了我的索引值。 我以为这是我的重新排序指标:和阅读这个StackOverflow的线程帮助确认。

会发生什么样的是,我推删除页面上的第三个项目,并从数据库中删除该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);
    });
};

Answer 1:

相反,通过索引和身份证,通过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);
   });
}


文章来源: Get correct index with Splice()