2016-07-31 2 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>'); 

이것이 좋은 방법인지 확실하지 않습니다. :)

관련 문제