2016-07-31 65 views
0

我正在使用ng-repeat填充列表項並使用vTicker進一步爲它們製作動畫。我的app.js調用php返回一個對象,然後通過ng-repeat讀取它。問題是,即使在對象返回新消息之後,舊消息仍然可以在html中看到。但是,如果刷新頁面,舊值將被清除,並且只顯示最新消息。如何在不刷新頁面的情況下實現這一目標。Angularjs:從DOM中刪除舊的列表項值

App.js:

$scope.refreshbc = function() 
    { 
     $scope.bclist = ""; 
     $http.get(bcurl).then(function(bcresponse) 
     { 
      if(bcresponse.data.indexOf("Entry does not exist in  
      database") > -1) 
      { 
       $scope.bclist = ""; 
       console.log($scope.bclist); 
      } else 
      { 
       $scope.bclist = bcresponse.data; 

       if($scope.bclist[0].msg == "No alerts.") 
       { 
       $scope.mibtn = "btn-success"; 
       $scope.mitxtcol = "black"; 

       } else 
       { 

       $scope.mibtn = "btn-danger"; 
       $scope.mitxtcol = "white"; 
       } 
      } 

    }); 

$ scope.refreshbc(); $ interval(function(){$ scope.refreshbc();},30000);

HTML:

<div id="example" style="margin-top:39px;color:#cccc00;font- 
                size:15px;"> 
    <ul id="tickerul" style="list-style: none;"> 
     <li ng-init="stvticker()" ng-if="bclist[0].msg !== null" ng- 
     repeat="bc in bclist track by $index" >{{bc.msg}}</li> 
     <li style=""></li> 
    </ul> 

</div> 
+0

你爲什麼要設置'$ scope.bclist =「」;'(一個字符串),然後還將它視爲一個具有屬性的對象數組(或至少是'msg'屬性)?如果你想清除數組,你應該使用'$ scope.bclist = [];'。 – Lex

+0

我做了以上更改,但該列表仍顯示舊值。頁面仍然需要刷新以清除舊值。 –

+0

奇怪。當你改變支持'ng-repeat'的數組時,它應該刷新。 – Lex

回答

0

我能在功能附加下面的代碼來解決該問題。

$('#tickerul li').remove(); 
    $('#example ul').prepend('<li></li>'); 

不知道這是否是一種好方法。 :)