使用$ getByHandle()加载时不会触发离子滚动

And*_*ran 4 ionic-framework

我正在尝试向下滚动到delegate-handle ="start"with ionic on load.当我尝试运行它时,我在控制台中收到此消息.

Delegate for handle "small" could not find a corresponding element with delegate-handle="small"! scrollTop() was not called!
Run Code Online (Sandbox Code Playgroud)

可能的原因:如果您立即调用scrollTop(),并且您的delegate-handle ="small"的元素是您的控制器的子元素,那么您的元素可能尚未编译.在你的scrollTop()调用周围加上$ timeout,然后再试一次.

我的代码看起来像这样,有人可能会看到有什么问题吗?

$timeout(function() {
     $ionicScrollDelegate.$getByHandle('start').scrollTop();

}, 10);
Run Code Online (Sandbox Code Playgroud)

如果我使用$ ionicScrollDelegate.scrollBottom(),它将滚动到底部,因此它必须是特定功能的问题.

HTML代码

     <ion-view title="Kalender">
   <ion-content>
    <ion-list ng-repeat="activity in calendar">

       <div class="item item-divider" ng-show="activity.date_divider != null" data-year="{{activity.year}}">
        <div class="header-divider-small">{{activity.year}}</div>
        <div class="header-divider">{{activity.date_divider}}</div>
      </div>

        <div class="item item-icon-right calendar" ng-show="activity.date_divider == null">
            <span class="header">{{activity.name}}</span>
              <br />
              <span class="text">{{activity.time}} - {{activity.place}}</span>
              <a class="button button-icon icon {{activity.icon}} right not-selected"></a>
        </div>


    </ion-list>
    <div delegate-handle="start"></div>
  </ion-content>
</ion-view>
Run Code Online (Sandbox Code Playgroud)

谢谢.

Dmi*_*riy 11

Ionic 1.0.0-beta14有一些奇怪的问题getByHandle()所以你可以这样做:

$timeout(function() {
    var startHandle = _.find($ionicScrollDelegate._instances, function (s) {
        return s.$$delegateHandle === "start";
    });
    startHandle.scrollTop();
});
Run Code Online (Sandbox Code Playgroud)

forum.ionicframework.com上的解决方案来源