在我的angularJs控制器中,我需要从控制器初始化的服务器加载一些图像
$http({
method: 'GET',
url: $scope.baseUrl + '/edit/' + $scope.idScheda
}).then(function (response) {
$scope.scheda = response.data;
//JQuery initialization
}).catch(function (error, status) {
$scope.show_error_message("Error", error.data.message);
});
然后我需要调用Jquery函数,将新上传的图像初始化为幻灯片显示
var swiper = new Swiper(".mySwiper", {
loop: true,
spaceBetween: 10,
slidesPerView: 4,
freeMode: true,
watchSlidesProgress: true,
});
var swiper2 = new Swiper(".mySwiper2", {
loop: true,
spaceBetween: 10,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
thumbs: {
swiper: swiper,
},
});
如果我在";那么";$http的事件承诺DOM仍然不会更新,JQuery也不工作。
如果我延迟初始化JQuery组件以确保DOM更新,问题就会消失,但这是一个非常糟糕的解决方案!
是否有AngularJS管理的事件在DOM更新后触发?
$http
执行以下操作:
- 运行http请求
- 运行您的
then
块 - 运行
digest
您希望在#3之后运行jquery代码,所以只需使用本机setTimeout(..., 0)
或$timeout(..., 0)
将其排队即可
第页。S.你的普通angularjs代码不应该像那样使用丑陋的jquery-create指令/组件
<div cool-swiper="..."></div>
在onChanges中,您可以像您一样在超时的情况下运行jquery插件。