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

これが適切な方法であるかどうかわかりません。 :)

関連する問題