在我的最高级别范围内,我从服务器获取一些数据以在整个页面中使用,如下所示$scope.lotsOfData = $http.get("lotsOfData");
:所以现在我的范围拥有一个承诺对象lotsOfData
。然后,在我的 HTML 中,我有只与一小部分lotsOfData
对象有关的指令。一个这样的指令可能看起来像这样:
<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
对象,只有一个地方可以改变它获取currObj
对象的方式。在我的指令的链接函数中,我尝试了这个:
link: function(scope, element, attrs) {
scope.currObj = scope.lotsOfData.foo.blah[attrs.source].bar[attrs.id];
}
但是,由于lotsOfData
它是一个 Promise 对象,它没有名为foo
. 我不太了解 promise 对象的工作原理,所以也许我只需要知道如何获得所需的属性。
我希望我在这里尝试完成的工作是有意义的,有人可以为我指明正确的方向,以了解如何完成这项工作。谢谢。