onsen-ui postclose不是用刷子触发的

时间:2015-02-06 23:32:55

标签: javascript onsen-ui

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

我开始了一个带有骨骼侧面菜单和角度指令的新项目,没有变化,没有记录错误。

2 个答案:

答案 0 :(得分:1)

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

希望有所帮助

答案 1 :(得分:0)

你需要使用$evalAsync对变量进行消化,以消化角度

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