2017-03-16 14 views
0

フィルタではなくモデル内で.nameが起きている理由を理解できません。私は、nameText.nameを作成してそれを自分のデータにバインドするときに、何が起きているのか分かりません。フィルタは実際にどのように機能していますか?角度フィルタ処理がこのコードでどのように機能するか説明できますか?

<input type="text" data-ng-model="nameText.name" /> 
<input type="text" data-ng-model="nameText.city" /> 
<li data-ng-repeat="customer in customers | filter:nameText> 

<script> 
function FilteringController($scope) { 
    $scope.customers = [ 
     { name: 'Dave Jones', city: 'Phoenix' }, 
     { name: 'Jamie Riley', city: 'Phoenix' }, 
     { name: 'Heedy Wahlin', city: 'Chandler' }, 
     { name: 'Thomas Winter', city: 'Seattle' } 
    ]; 
</script> 

答えて

0

nameTextこの場合特性namecity持つオブジェクトです。これらのプロパティは入力フィールドで埋められます。オブジェクトを使用してリストをフィルタリングしています。この場合Angularは、一致する名前のプロパティを使用してリスト内のオブジェクトをフィルタリングします。たとえば、nameText.cityPhoenixの場合、リスト内の項目はフィルタリングされ、cityプロパティの場合はPhoenixの項目のみが残されます。これはnameについても同様に動作し、両方を組み合わせることができます。

:正確な実装については、Angularソースコードを調べることをおすすめします。オブジェクトを使用するフィルタの具体的なケースはhereです。これは、フィルタとして渡されるオブジェクトのすべてのプロパティを取得することです(nameText)。次に、オブジェクトのリストを調べて、検索対象のプロパティと一致する値を持つプロパティを持つすべてのオブジェクトをフィルタリングして選択します。私が参照したソースコードでは、渡す可能性がある他のタイプの検索フィルタがどのように処理されるかを見ることができます。

+0

このnameTextは、これらのプロパティnameとcityを持つオブジェクトで、名前に "John"と入力すると、nameText = {name: "John"}が得られます。市の入力ボックスに何も入れていないと、それは都市のフィールドを持っていますか?その後、フィルタはオブジェクトnameTextを探し、どのように正確に機能するのか、シーンの裏に行き、 "John"という名前ですべてのものを見つけ出し、モデルとフィルタの間でコードが何が起こっているかを表示します。 –

+0

@HyeShusho、私の更新された答えを見てください。市の入力がタッチされるまで、プロパティはおそらく存在しませんが、それは自分で確認するだけで簡単です(ページ上の検索オブジェクトを印刷するだけです)。 –

関連する問題