角度目录滑动执行

时间:2016-09-02 19:12:56

标签: javascript angularjs mean-stack

我正在使用以下插件:http://vasyabigi.github.io/angular-slick/

我也在使用ng-repeat,所以我遇到它在ng-repeat完成之前正在执行。

有没有办法解决这个问题?

<slick><div ng-repeat="carfactory in vm.carfactory">
        <h4> {{ carfactory.name }}</h4>
        <p>
            <img src="/biler/1.png" style="float: left; padding: 15px; max-width: 100px; height: auto; margin-bottom: 26px;">
        </p>

        <p><b>Pris:</b> {{ carfactory.price | currency }} kroner</p>
        <p><b>Eier:</b> <a href="/">{{ carfactory.ownerid }}</a></p>

        <p>
            <b>Beskyttelse:</b> {{ carfactory.protection }}</p><p><b>Antall igjen:</b> <span id="antall_1">{{ carfactory.amount }}</span>
        </p>

        <p class="hotel-out">
            <input ng-show="carfactory.amount > 0" class="btn btn-block" ng-click="vm.purchasecar(carfactory)" type="submit"value="Kjøp bil!">
            <p class="hotel-in alert alert-warning" ng-show="carfactory.amount <= 0">Gå ut av hotell for å kjøpe en bil.</p>
        </p>
</div></slick>

这不起作用,但如果我删除转发器并复制+粘贴代码两次就行了。

知道如何让ng-repeat工作,或者我如何让slicker插件等到它完成加载?

编辑:

如果我执行<slick init-onload="true" data="vm.carfactory",则会收到以下错误:

slider.unslick is not a function

编辑:我的控制器正在使用angular.module('garage',['slick'])

1 个答案:

答案 0 :(得分:2)

我的假设是在ng-repeat中的项目呈现之前调用光滑。当slick()使用以下代码示例完成渲染时,您可以尝试(重新)执行ng-repeat函数:

<div ng-repeat="carfactory in vm.carfactory" ng-init="$last && reloadSlick()">

$last变量确保仅为最后一项(一次)调用该函数。

作为安全措施,您可以使用reloadSlick()将代码包装在setTimeout()中,以便其执行等待下一个事件循环。

$scope.reloadSlick = function() {
  setTimeout(function() {... code here ...})
}

有关ng-repeat渲染回调的更多参考资料: