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

Не уверен, что это хороший способ сделать это. :)

 Смежные вопросы

  • Нет связанных вопросов^_^