我有一个具有多个角度控制器的离子应用程序.其中一个控制器是LoginCtrl,另一个是RegisterCtrl.我遇到的问题是我在Login Ctrl中调用$emit来打开RegisterCtrl中带滑块的模态:
模态模板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>
LoginCrtl
$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();
});
我得到的问题是当我调用滑块的.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中设置了委托句柄,并且我已经在超时内调用了.slide()并且没有解决问题.
解决方法:
我设法通过使用滑块上的“active-slide”属性来解决这个问题.这基本上采用一个整数,您更新为要查看的幻灯片的任何索引.
在视图中:
<ion-slide-box delegate-handle="registerSlider" show-pager="false" active-slide="currentSlide">
</ion-slide-box>
在控制器中:
//Instead of this:
if ($ionicSlideBoxDelegate.$getByHandle('registerSlider')){
$ionicSlideBoxDelegate.$getByHandle('registerSlider').slide(2);
}
// Do this...
$scope.currentStep = 2;
原文地址:https://codeday.me/bug/20190702/1352480.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。