2016-05-30 2 views
1

私はAngularで作業しています。私のページの一部はng-repeatを使っていくつかのバグトラッカーチケットを表示しています。サイトの一環として、チケットを検索する機能も提供したいと考えています。私は私が望むようにその部分を働かせることができます、そして、私はちょうど新しいチケットを追加している場合、彼らはうまく表示されます。Angularのng-repeat内のすべての要素を削除します

しかし、ユーザーが検索すると、現在表示されているチケットのすべてを削除し、検索結果に置き換えることができます。

私はng-repeatitem in tickets track by item.idと設定していたので、最初の考えは$scope.ticketsを新しいデータと同じに設定することでした。しかし、AngularではDOMを更新しませんでした。

だから、私は新たなデータに等しいことを設定、空の配列に等しい$scope.ticketsを設定しようとした:DOMに

$scope.$apply(function() { 
    $scope.tickets = []; 

    $scope.tickets = data; 
}); 

がまだ更新、console.log($scope.tickets)が正しいオブジェクトを示しているにもかかわらず。

私は、個々の要素を削除すること

$scope.$apply(function() { 
    array.splice(index, 1); 
}); 

の方法を認識してんだけど、私は、私はすべての要素を削除することを適用するかどうかはわかりません。

まもなくPlunkrやJSBinがQに追加されます。

現在のすべての要素をデータから作成した新しい要素に置き換えるには、どのような方法が適切でしょうか?

+0

はあなたNGリピート式でフィルタを使用していない理由はありますあなたが探しているdivだけを表示します。 AngularJS doc https://docs.angularjs.org/api/ng/filter/filter – SeRu

+0

を確認してください。より多くのコード・コンテキストを確認する必要があります。ビューが更新されない理由を私たちが知ることができるように十分に示されていません。常に[mcve]を提供する – charlietfl

答えて

1

設定を試してみてくださいarray.length = 0 これは実際に問題があるように思われる配列への参照を削除しないで、すべての要素を削除します。

しかし、もう1つの方法は、追加のデータバッグを用意することです。

たとえば、$scope.data.ticketsの場合、通常通りticketsを再調整できます。重要なことは、あなたの商品を参照する必要がありますitem in data.tickets

+0

すばやい返信をありがとう。残念ながら、それは動作しませんでした。新しいデータにない既存のdivはそのまま残ります。 –

+0

あなたは私の更新を試すことができますか? – Luke

+0

理由はわかりませんが、うまくいきました:)ありがとうございます! –

0

$watchを試しましたか? /それは隠れるの仕事をするだろう|(::表現comparator`フィルタitem.idによってチケットトラックで例えば `項目)

$scope.$watch('tickets', function() { 
    //update data HERE 
}); 
関連する問題