angularjs 删除循环中的 promise 数据之后立马显示变化

在用 restangurlar 来跟后台 api 交互的时候,删除一条记录,但是直接显示在页面中。第三方异步的数据没办法立即同步,如果要看到删除的结果要重新刷新页面的话就太不 cool 了,google 了一把找到解决方法。

原始 js 代码如下:

.controller(‘HostCtrl‘, [‘$scope‘,‘Restangular‘,function($scope,Restangular) {
    var baseHosts = Restangular.all(‘api/host‘);

    $scope.hosts=baseHosts.getList().$object;

    $scope.del=function(host,uuid){
        Restangular.one(‘api/host‘,uuid).remove()
        }
}])

html:

<tbody>
<tr ng-repeat="host in hosts|filter:searchText">
    <td><a href="#" ng-if="host.Uuid!=nil" ng-click="del(host,host.Uuid)">delete</a> </td>
    <td class="center">{{host.Hostname}}</td>
    <td class="center">{{host.Ip}}</td>
    <td><p ng-repeat="tcp_port in host.Tcp_list">{{tcp_port}}</p></td>
    <td><p ng-repeat="udp_port in host.Udp_list">{{udp_port}}</p></td>
</tr>
</tbody>

修改后的 js 代码如下:

.controller(‘HostCtrl‘, [‘$scope‘,‘Restangular‘,function($scope,Restangular) {
    var baseHosts = Restangular.all(‘api/host‘);

    $scope.hosts=baseHosts.getList().$object;

    $scope.del=function(host,uuid){
        Restangular.one(‘api/host‘,uuid).remove().then(function(){
            var index=$scope.hosts.indexOf(host);
            if(index > -1) $scope.hosts.splice(index,1);
        })
        }
}])
时间: 2024-11-07 19:57:39

angularjs 删除循环中的 promise 数据之后立马显示变化的相关文章

C# 删除Collections中的重复数据

List去重 通过扩展方法System.Linq.Enumerable.Distinct() 对于简单数据类型,可以简单的调用这个函数就行啦,因为它会使用默认的比较器(System.Collections.Generic.EqualityComparer<T>.Default). Default   属性检查类型 T 是否实现此 System.IEquatable<T> 泛型接口,如果实现,该属性将返回一个包含 IEquatable<T>.Equals 方法的实现的 E

怎么在Beyond Compare中删除表格中的列表数据

Beyond Compare是一款用于文件及文件夹比较的软件,不仅可以快速比较出两个文件夹之间的不同之处,还可以详细比较文件之间的内容差异. 当我们使用Beyond Compare执行表格比较会话操作时,可能想要对比较的原表格数据进对行修改,以便于更加有针对性的查看数据之间的差异部分,例如:删除列表数据.修改列表名称或者重置文件排列顺序等,接下来就和大家简单介绍一下,Beyond Compare表格比较删除列表数据的方法. 具体操作步骤如下所示 步骤一:打开Beyond Compare软件,选择

Java中删除List中的某些数据的方法

经过试验,删除List中某些数据的最好的方法是使用iterator,如果有什么不对的地方,请指正批评:记录代码: /** * 去除未发布状态的课件,并删除其在数据库的存储 * @param listLessons * @return */ public static List<LessonModel> removeUnpublishedLessons(KorenpineApplication application, List<LessonModel> listLessons){

超实用--删除MYSQL中指定的数据的全部表

作过的人都知道,重复测试数据库的苦恼. 用法:# Usage: ./script user password dbnane mysql.nixcraft.in ~~~~~~~~~~~~~ #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user password dbnane # Usage: ./script user password dbnane server-ip # Usage: ./script user password dbna

Python 学习2 删除列表中的重复数据

list0=['b','c', 'd','b','c','a','a'] 方法1:使用set() list1=sorted(set(list0),key=list0.index) # sorted output print( list1) 方法2:使用 {}.fromkeys().keys() list2={}.fromkeys(list0).keys() print(list2) 方法3:set()+sort() list3=list(set(list0)) list3.sort(key=li

redis删除库中所有的数据 key

#删除当前数据库中的所有Key flushdb #删除所有数据库中的key flushall 原文地址:https://www.cnblogs.com/zhunong/p/12658764.html

JS删除数组中重复的数据

Array.delRepeat = function (arr) {   var _arr = arr.slice(0),retArr = [];   for (var i = 0, len = _arr.length; i < len; i++) {     for (var j = i + 1; j < len; j++) {       if (_arr[i] == _arr[j]) {         break;       }     }     if (j == len) {  

项目中表中每条数据的序号显示自增的方法

一:如果用的是smarty模板 smarty有一个内置函数,用在{[email protected]}记录页面显示的条数 iteration是当前循环的次数,和index不同,iteration是从1开始.iteration在每次循环的时候都会加一 二:利用分页$i = ($page-1)*$per  echo  "<td>".++$i."</td>"; 序号初值 = (页号-1)*每页行数+1

Java循环中删除一个列表元素

本文主要想讲述一下我对之前看到一篇文章的说法.假设跟你的想法有出入,欢迎留言.一起讨论. #3. 在循环中删除一个列表元素 考虑以下的代码.迭代过程中删除元素: ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d")); for (int i = 0; i < list.size(); i++