如何使用 angularjs 从 JavaScript 列表中删除项目,而不加载列表中的先前项目

A. gautama

我有一个 REST API,我可以从中接收数据,例如项目列表。有人告诉我 JavaScript 的美妙之处在于,当某些条件发生变化时,您不必重新加载整个页面。

我将 angular 连接到我的 API 来尝试一下。我现在遇到的问题是,在调用我的 API 删除一个项目后,整个列表(不是页面,页面不会刷新)被重新加载。我希望在我的页面上发生的唯一事情是我已删除的项目从屏幕上删除,而列表中的其他项目不会重新加载。我尝试了很多东西,但没有任何效果。这是我的一些代码。所以这就是我在屏幕上看到的。我删除了一个项目。整个列表消失了几毫秒然后重新出现,当然没有我删除的项目。

评论.html:

<h1>Reviews</h1>
<ul>
  <li ng-repeat="review in reviews track by review.id">
    <h3><a href="http://localhost:8080/videogamereviews/#!/show/{{review.id}}">{{review.title}}</a></h3>
    <p>
      {{ review.conclusie }}
    </p>
    <p><a href="http://localhost:8080/videogamereviews/#!/delete/{{review.id}}">delete this review</a>
    </p>
    <p><a href="http://localhost:8080/videogamereviews/#!/edit/{{review.id}}">edit this review</a>
    </p>
  </li>
</ul>

应用程序.js

var VideogameReviewsApp = angular.module('VideogameReviewsApp', ['ngRoute', 'ngResource']).config(
  ['$routeProvider', '$resourceProvider',
    function($routeProvider, $resourceProvider) {
      $routeProvider.when('/', {
        controller: ReviewCtrlAll,
        templateUrl: 'reviews.html'
      }).when('/home', {
        controller: Test,
        templateUrl: 'reviews.html'
      }).

      when('/show/:id', {
        controller: ReviewCtrl,
        templateUrl: 'review.html'
      }).when('/delete/:id', {
        controller: DeleteCtrl,
        templateUrl: 'reviews.html'
      }).when('/new', {
        controller: PostCtrl,
        templateUrl: 'newreview.html'
      }).when('/edit/:id', {
        controller: EditCtrl,
        templateUrl: 'newreview.html'
      }).

      otherwise({
        redirectTo: '/'
      });
      $resourceProvider.defaults.stripTrailingSlashes = false;
    }
  ]);

VideogameReviewsApp.factory('Review', function($resource) {
  return $resource('http://localhost/videogamereviews/review/:id', {
      id: '@id'
    },

    {
      update: {
        method: 'PUT'
      }
    });
});

var DeleteCtrl = function($scope, Review, $routeParams, $window, $location) {
  Review.delete({
    id: $routeParams.id
  }, function() {

    $scope.reviews = Review.query();
  });
}

希望对新手程序员有所帮助!

天使萨拉查

您不需要重新加载页面,因为 Angular 为您提供了两种方式的绑定。因此,如果您从评论数组中删除一个项目(以编程方式),那么您的 UI 就会更新。

你的控制器应该是这样的

function homeController ($scope, $timeout) {
      $scope.persons = [{
        name : 'A',
        age : 12
      }, {
        name : 'B',
        age : 15
      }]

      $scope.remove = function (person, index) {
        console.log(person)
        console.log(index)
        // faking api called
        $timeout(function () {
          // if your api called is succesfull
          // then remove the person from the array
          $scope.persons.splice(index, 1)
        }, 500)
      }
    } 

和你的 .html 文件

<ul>
      <li ng-repeat="person in persons">
        <span>{{person.name}}</span>
        <button ng-click="remove(person, $index)">x</button>
      </li>
    </ul>

和现场演示链接,如果你想测试它

https://jsbin.com/lizanowoqo/edit?html,output

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从列表中删除项目并更新angularjs中的列表?

使用AngularJs从数据绑定的JSON列表中删除项目

如何在angularJS的列表中添加项目?

在AngularJS中删除项目后如何重新加载状态?

如何从列表中删除项目

如何删除列表中的项目?

如何从列表中删除项目并使项目加入

如何使用WriteBatch删除列表中的项目?

如何使用jQuery从列表中删除项目?

如何在JavaScript中显示表格中的项目列表?

如何使用python在列表中添加当前项目和上一个项目

如何使用JavaScript从列表中删除<li>

如何使用angularjs从JSON对象中删除项目

使用angularjs从json文件中删除项目

无法从 JavaScript 的列表中删除新项目

如何从Javascript列表中随机选择一个项目

使用javascript从共享点列表中检索项目

如何从angularjs的列表中删除重复的数据?

如何从angularjs列表中删除特定行

如何使用JavaScript从Sharepoint列表中的文件夹中获取项目?

如何使用React中的删除按钮从列表中删除项目?

如何从React中的列表中删除项目?

如何使用Jasmine和AngularJs在javascript中实现链接存根?

如何使用javascript或angular js为列表中的每个项目显示不同的工具提示?

如何使用AngularJS延迟加载非Angular JavaScript文件?

如何使用javascript动态加载angularjs“ng-app”?

如何使用提供程序从 Flutter 中的列表中删除项目?

如何从firebase列表中删除项目

如何从嵌入列表中删除项目?