私の最高レベルのスコープでは、次のようにページ全体で使用するためにサーバーからいくつかのデータをフェッチします$scope.lotsOfData = $http.get("lotsOfData");
。これで、私のスコープは の promise オブジェクトを保持しますlotsOfData
。次に、私の HTML には、lotsOfData
オブジェクトの小さなセットのみに関係するディレクティブがあります。そのようなディレクティブの 1 つは次のようになります。
<div>
{{lotsOfData.foo.blah[source].bar[id].someData}}<br>
{{lotsOfData.foo.blah[source].bar[id].otherData}}<br>
{{lotsOfData.foo.blah[source].bar[id].differentData}}
</div>
source と id は、ディレクティブの属性を通じて設定されています。私のHTMLページは次のようになります。
<data-subset source="1" id="1" />
<data-subset source="1" id="2" />
<data-subset source="2" id="1" />
<data-subset source="3" id="1" />
lotsOfData.foo.blah[source].bar[id]
ディレクティブ全体で繰り返さなければならないのは嫌いです。私のディレクティブがこのように見えるように、スコープに設定する方法はありますか?
<div>
{{currObj.someData}}<br>
{{currObj.otherData}}<br>
{{currObj.differentData}}
</div>
これにより HTML がクリーンアップさlotsOfData
れるだけでなく、そのオブジェクトを再構築する場合、オブジェクトの取得方法を変更する場所は 1 つだけになりcurrObj
ます。私のディレクティブのリンク関数で、これを試しました:
link: function(scope, element, attrs) {
scope.currObj = scope.lotsOfData.foo.blah[attrs.source].bar[attrs.id];
}
ただし、lotsOfData
は promise オブジェクトであるため、 というプロパティはありませんfoo
。promise オブジェクトがどのように機能するかについてはよく知らないので、必要なプロパティにアクセスする方法を知る必要があるだけかもしれません。
ここで達成しようとしていることが理にかなっており、誰かがこれを機能させる方法について正しい方向に向けてくれることを願っています. ありがとう。