1

我正在尝试从我的 AngularJS 视图中删除项目。从视图中,我传递了索引和 ID。在 JS 控制器中,我从 AngularJS 数组/模型中拼接(索引) 。我将 ID 传递给$http.get以调用对我的数据库的删除。这一切都有效。

……

直到我请求刷新我的页面。每 5 秒我都会请求更新 Angular 模型,并将任何新数据连接到它。但我发现它搞砸了我的指数值。我以为它正在重新排序我的索引:阅读这个 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>

控制器.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 回答