gpt4 book ai didi

javascript - ionic 模态 slider 问题 : could not find a corresponding element with delegate-handle= on $emit

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:15 24 4
gpt4 key购买 nike

我有一个具有多个 Angular Controller 的 Ionic 应用程序。其中一个 Controller 是 LoginCtrl,另一个是 RegisterCtrl。我遇到的问题是我在 Login Ctrl 中调用 $emit 以从 RegisterCtrl 中打开带有 slider 的模式:

模态模板 HTML

<!-- A very cut down version of my code -->
<ion-content class="register-wrapper">
<ion-slide-box delegate-handle="registerSlider" show-pager="false">
<ion-slide class="padding">
Slide 1
</ion-slide>
<ion-slide class="padding">
Slide 2
</ion-slide>
<ion-slide class="padding">
Slide 3
</ion-slide>
</ion-slide-box>

</ion-content>

登录控制

$rootScope.$emit("showRegisterPopup", {data:'somedata'});

RegisterCrtl

// This is a cut down version of the code
$ionicModal.fromTemplateUrl('templates/modals/register-form1.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function (modal) {
$scope.modal = modal;
$scope.registerModalSlider = $ionicSlideBoxDelegate.$getByHandle('registerSlider');
$scope.registerModalSlider.enableSlide(false);
});

$rootScope.$on("showRegisterPopup", function(emitEvent, somedata){
if ($scope.registerModalSlider){
$timeout(function({
$scope.registerModalSlider.slide(2);
},200);
}
rc.showRegister();
});

我遇到的问题是当我调用 slider 的 .slide() 函数时它没有滑动到指定的页面并且出现以下错误:

Delegate for handle "registerSlider" could not find a corresponding element with delegate-handle="registerSlider"! slide() was not called!
Possible cause: If you are calling slide() immediately, and your element with delegate-handle="registerSlider" is a child of your controller, then your element may not be compiled yet. Put a $timeout around your call to slide() and try again.

正如您所看到的,我已经在 HTML 中设置了委托(delegate)句柄,并且我已经在超时内调用了 .slide(),但这并没有解决问题。

最佳答案

我设法通过使用 slider 上的“active-slide”属性解决了这个问题。这基本上需要一个整数,您可以将该整数更新为您想要查看的幻灯片的任何索引。

在 View 中:

<ion-slide-box delegate-handle="registerSlider" show-pager="false" active-slide="currentSlide">
</ion-slide-box>

在 Controller 中:

//Instead of this:
if ($ionicSlideBoxDelegate.$getByHandle('registerSlider')){
$ionicSlideBoxDelegate.$getByHandle('registerSlider').slide(2);
}

// Do this...
$scope.currentStep = 2;

关于javascript - ionic 模态 slider 问题 : could not find a corresponding element with delegate-handle= on $emit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003653/

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