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