我在使用angular interpolation生成动态ID方面遇到了麻烦。 例如,我需要为列表的每个范围添加不同的ID,以便通过单击滚动它们 这就是我生成单个id的方式:
ctrl.letterScroll = function (letter) {
var container = angular.element(document.getElementsByClassName('sci-refs-scroll'));
var anchor = angular.element(document.getElementById(ctrl.title + '_' + letter));
if (container && anchor && ctrl.compactAnchors[letter]) {
container.scrollToElement(anchor, ctrl.compact ? 0 : 10, 800);
}
};
<div id="sci-refs-body-compact" layout="column" flex="95" class="sci-refs-scroll sci-refs-body-compact">
<div class="dbclick-wrap" ng-repeat="item in ctrl.items | filter: ctrl.sciRefLibSearch | orderBy: 'name'">
<div layout-wrap layout="column"
class="sci-refs-body-compact-entry"
lvl-draggable="{{ctrl.draggable}}"
data-scirefid="{{::item.id}}"
data-scirefdescription="{{::item.name}}"
data-scirefversion="{{::item.versionLabel}}">
<div layout="row" class="sci-ref-entry-compact-row" flex>
<span id="{{ctrl.title + '_' + item.compactAnchor}}"
class="sci-ref-entry-compact"
ng-if="item.compactAnchor && ctrl.compactAnchors[item.compactAnchor]"
flex="95">{{::item.name}}</span>
<span class="sci-ref-entry-compact"
ng-if="!item.compactAnchor"
flex="95">{{::item.name}}</span>
<md-icon class="sci-ref-doc-opener"
ng-click="ctrl.itemClickCallback({item: item})"
flex="5">visibility</md-icon>
</div>
</div>
</div>
</div>
字段item.anchor是在REST调用之后生成的,有时会正确生成id,有时则item.anchor的部分未定义。我怀疑这是由于在REST响应到来之前生成了DOM。 我怎么解决? 有没有办法在item.anchor?
的值之后在运行时重新生成此id我制作的滚动功能使用列表中生成的ID进行滚动。 ID具有以下格式:“LIBRARY_a,LIBRARY_b,LIBRARY_c ......”并且只有以新字母开头的第一行(因此列表中没有重复的ID)。
答案 0 :(得分:0)
我将做的是将在元素上放置一个ng-if并检查数据是否从其余的调用中返回。
ng-if仅在数据存在时呈现html