0

私は$scopeに配列から更新され、ng-repeatを通じてデータを移入します角度でディレクティブを持っています私がしたいことは、Angularの背後で働くapiからそれぞれの人物の名前を得ることです。私はこれにどのように接近するか分からない。のデータのロードは

  1. は、フィルタを作成し、入力としてpersonidを渡し、名前を取得するためのAPIへのAJAX呼び出しを作る:私はアイデアのカップルを持っています。それはサーバーへの呼び出しがたくさんありますが、フィルタをこのように使用するかどうかはわかりません。

  2. コントローラにアレイを作成するときに、それを反復して、値を$scopeに割り当てる前に必要な呼び出しを行ってから、ビューに表示するだけです。

どちらのソリューションは非常に集中的になりますので、どちらがより良いアプローチがあり、でもまだ良いですか?

答えて

1

まあ、最も簡単なのは、装飾されたオブジェクトを指示文に渡すだけです。このようなユーザーオブジェクトの上に

[ 
    { 
     id: 12, 
     name: 'John' 
    }, 
    { 
     id: 83, 
     name: 'Mary' 
    }, 
    { 
     id: 92, 
     name: 'Jane' 
    }, 
] 

そして今、することができますループ:

John has id 12 
Mary has id 83 
Jane has id 92 

簡単にそれをしないをプリントアウトします

<div ng-repeat="user in items"> 
    ... 
    <div>{{ user.name }} has id {{ user.id }}</div> 
    ... 
</div> 

$scope.itemsは、この(例)のように見えることを確認してください!

EDITもう一度質問を読んでください。私はあなたを理解していますはあなたのコントローラで利用可能なIDを持っていますか?その場合は、2つのオプションしかありません。すべてのIDを渡す検索クエリを起動し、サーバーに完全なユーザーオブジェクトを返させます。これは、1回のxhr通話にかかります。そうでなければ、まあ、ええ、あなたは、各ユーザーのための呼び出しをする必要があります....私はすべてのコストで避けるだろう。あなたは、フィルタを介してサービスしようとすることができ

+0

はい、問題は、名前だけでなく、名前を取得するためにいくつかの追加作業を行う必要があるということです。すべてのIDを収集し、サーバーへの追加呼び出しを1つだけ行うことは非常に良いアイデアのようです。 – mmvsbg

1

app.service('getperson', function() { 
    this.getperson= function (x) { 
      person = <lookup logic> 
     return person; 
    } 
}); 
app.filter('personinfo',['getperson', function(getperson) { 
    return function(x) { 
     return getperson.myFunc(x); 
    }; 
}]); 

を次に、あなたの文に挿入することができます:それはあなたのため

警告動作するかどう

<div>{{value.personid | personinfo}}</div> 

を参照してください。これはすべてのレコードのdbを呼び出します。それ以外の場合は、必要なすべての情報を初期スコープに追加します。

関連する問題