onsen-ui 滑动未触发关闭后
onsen-ui postclose not triggered with swiping
HTML:
<ons-sliding-menu
main-page="page1.html"
menu-page="sidemenu.html"
side="left"
max-slide-distance="250px"
var="sidemenu"
type="reveal"
swipe-target-width="40px">
</ons-sliding-menu>
JS:
sidemenu.on('postclose', function() {
$scope.show_y = false;
$scope.show_x = true;
});
当用户滑动菜单关闭时,postclose
功能不会被触发,
虽然点击效果很好....
请指教?
更新---
$scope.$watch(function($scope) { return $scope.sidemenu.isMenuOpened(); },
function() {
alert('hi');
});
甚至 isMenuOpened()
都不会被侧边菜单上的滑动事件触发。
我开始了一个新项目,只有一个简单的侧边菜单和 angular 指令,没有变化,没有错误记录。
javascript里面的ons-sliding-menu
元素对象是$scope.sidemenu
而不是sidemenu
,试试修改一下看看行不行
如果还是不行可能是因为:
- 控制器在 HTML 中未正确声明(例如:未涵盖声明滑动菜单的代码部分)
- 创建
ons-sliding-menu
侦听器的代码从未执行,因此侦听器不存在
编辑
这是我在我的一个应用程序中实现的示例
app.controller('SlidingMenuController', function($scope){
$scope.checkSlidingMenuStatus = function(){
$scope.slidingMenu.on('postclose', function(){
$scope.slidingMenu.setSwipeable(false);
});
$scope.slidingMenu.on('postopen', function(){
$scope.slidingMenu.setSwipeable(true);
});
};
$scope.checkSlidingMenuStatus();
});
希望对您有所帮助
您需要对要由 angular
消化的变量更改使用 $evalAsync
sidemenu.on('preopen', function() {
$scope.$evalAsync( function() {
$scope.sm_main_cover = true;
});
});
HTML:
<ons-sliding-menu
main-page="page1.html"
menu-page="sidemenu.html"
side="left"
max-slide-distance="250px"
var="sidemenu"
type="reveal"
swipe-target-width="40px">
</ons-sliding-menu>
JS:
sidemenu.on('postclose', function() {
$scope.show_y = false;
$scope.show_x = true;
});
当用户滑动菜单关闭时,postclose
功能不会被触发,
虽然点击效果很好....
请指教?
更新---
$scope.$watch(function($scope) { return $scope.sidemenu.isMenuOpened(); },
function() {
alert('hi');
});
甚至 isMenuOpened()
都不会被侧边菜单上的滑动事件触发。
我开始了一个新项目,只有一个简单的侧边菜单和 angular 指令,没有变化,没有错误记录。
javascript里面的ons-sliding-menu
元素对象是$scope.sidemenu
而不是sidemenu
,试试修改一下看看行不行
如果还是不行可能是因为:
- 控制器在 HTML 中未正确声明(例如:未涵盖声明滑动菜单的代码部分)
- 创建
ons-sliding-menu
侦听器的代码从未执行,因此侦听器不存在
编辑
这是我在我的一个应用程序中实现的示例
app.controller('SlidingMenuController', function($scope){
$scope.checkSlidingMenuStatus = function(){
$scope.slidingMenu.on('postclose', function(){
$scope.slidingMenu.setSwipeable(false);
});
$scope.slidingMenu.on('postopen', function(){
$scope.slidingMenu.setSwipeable(true);
});
};
$scope.checkSlidingMenuStatus();
});
希望对您有所帮助
您需要对要由 angular
消化的变量更改使用$evalAsync
sidemenu.on('preopen', function() {
$scope.$evalAsync( function() {
$scope.sm_main_cover = true;
});
});