如何在AngularJS中

时间:2018-06-04 14:17:56

标签: javascript angularjs

我在使用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)。

1 个答案:

答案 0 :(得分:0)

我将做的是将在元素上放置一个ng-if并检查数据是否从其余的调用中返回。

ng-if仅在数据存在时呈现html