【问题标题】:Weird behavior of $index in ngRepeatngRepeat 中 $index 的奇怪行为
【发布时间】:2014-05-26 07:39:04
【问题描述】:

我正在使用 Ionic 框架,我有以下代码:

工作正常:

<ion-slide-box on-slide-changed="slideChange()">
    <ion-slide ng-repeat="selected in instanceList">
        {{$index}}
        <div ng-if="currSlide==$index || !currSlide">
            CONTENT
        </div>
    </ion-slide>
</ion-slide-box>

不起作用:

<ion-slide-box on-slide-changed="slideChange()">
    <ion-slide ng-repeat="selected in instanceList">
        <div ng-if="currSlide==$index || !currSlide">
             CONTENT
        </div>
    </ion-slide>
</ion-slide-box>

对于那些不熟悉 Ionic 的人来说,这个函数可以确保 currSlide 总是在更新它的值并且它总是和 $index 的值相同:

$scope.slideChange = function() {
    $scope.currSlide = $ionicSlideBoxDelegate.currentIndex();
};

更多细节:当我说第二个代码不起作用时:第一张幻灯片的内容出现了,但是当我更换幻灯片时,div的内容没有出现。在第一个代码中,一切看起来都很好(还有我正在打印的 $index)。

CODEPEN: http://codepen.io/anon/pen/mdsIr

【问题讨论】:

  • 有没有想过这个问题?我在滑动框和 ng-if 上看到了类似的行为

标签: angularjs ionic-framework


【解决方案1】:

{{$index}} 的双向数据绑定 {{}} 在指令中有 $watch,因此删除 {{}} 会删除更新幻灯片的 $watch。

【讨论】:

  • 没有双向数据绑定怎么办才能被观看?
  • 你可以这样做
  • 你有离子滑块的 plnkr 吗?我从未使用过离子框架。可能只是 ng-change 到一个元素,或者 aet 建议。
  • 输入 id 无效,@aet。这是一个代码笔codepen.io/anon/pen/mdsIr
  • 您想要实现什么需要删除 {{$index}}?我可能错了,但看起来$ionicSlideBoxDelegate.currentIndex() 需要$index 才能在页面上呈现。要解决这个问题,您必须为 $index 引用选择添加 UI,然后更改业务逻辑以适应。
猜你喜欢
相关资源
最近更新 更多
热门标签