gpt4 book ai didi

javascript - Angular : view not updating

转载 作者:行者123 更新时间:2023-11-30 00:25:31 25 4
gpt4 key购买 nike

我的 Controller 指令:

app.directive("photoGallery", function() {
return {
restrict: 'E',
templateUrl: 'part/photoGallery.html',
controller: ["$http", function($http) {
me = this;
this.autoSlide = true;
this.currentIndex = 2;
this.autoSlide_timer;
this.photos = [{}];

this.Show = function(index) {
me.currentIndex = index;
};

this.Next = function() {
me.currentIndex++;
console.log(me.currentIndex);
if (me.currentIndex >= me.photos.length) {
me.currentIndex = 0;
}
me.Show(me.currentIndex);
};

this.Prev = function() {
me.currentIndex--;
if (me.currentIndex < 0) {
me.currentIndex = me.photos.length-1;
}
me.Show(me.currentIndex);
};

this.Init = function() {
$http.get("img/slider/_data.json")
.success(function(data) {
me.photos = data;
for(var i in me.photos) {
me.photos[i].index = i;
}
console.info(me.photos);
})
.error(function(e){
console.error(e);
});
this.autoSlide_timer = setInterval(this.Next, 1500);
}();
}],
controllerAs: 'gallery'
};
});

photoGallery.html :

<div class="GalleryContainer">{{gallery.currentIndex}}
<div class="PhotoWrapper">
<div ng-repeat="photo in gallery.photos" class="photo" ng-class="{active:gallery.currentIndex == photo.index}">
<img ng-src="img/slider/{{photo.path}}">
</div>
</div>
</div>

如您所见,在 Next() 函数中,我记录了 currentIndex由于 Init() 函数中的 setInterval(this.Next, 1500),每 1500 毫秒调用一次 Next()。我可以在控制台中看到:2、3、4、... 10、0、1、2 ...

但在浏览器中,{{gallery.currentIndex}} 永远不会更新,它显示默认值 (2)(photoGallery.html 第 1 行)

最佳答案

您必须使用 Angular $interval() 而不是 JavaScript setInterval() 函数。为什么 ?

因为 Angular 需要知道变量何时更新。 $interval 在执行结束时调用 $scope.$apply(),执行一个新的 $digest 循环通知更新为 Angular 。

您也可以等待请求成功继续设置您的时间间隔,以避免错误。

this.Init = function() {
$http.get("img/slider/_data.json")
.success(function(data) {
me.photos = data;
for(var i in me.photos) {
me.photos[i].index = i;
}
console.info(me.photos);

me.autoSlide_timer = $interval(me.Next, 1500);
})
.error(function(e){
console.error(e);
});
}();

关于javascript - Angular : view not updating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31573362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com