未通过滑动触发onsen ui后关闭

onsen-ui postclose not triggered with swiping

本文关键字:ui onsen      更新时间:2023-09-26

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');
                  });

即使是CCD_ 2也不会被侧菜单上的滑动事件触发。

我开始了一个新项目,使用了一个基本的侧菜单和角度指令,没有更改,也没有记录错误。

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();
});

希望它能帮助

您需要对要由角度消化的变量变化使用$evalAsync

sidemenu.on('preopen', function() {
            $scope.$evalAsync( function() {
                $scope.sm_main_cover = true;
            });
        });