2015-02-06 57 views
0

HTML:温泉的UI postclose不会触发与刷卡

<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功能不会被触发,

点击做工精细,虽然。 ...

请指教?

UPDATE ---

$scope.$watch(function($scope) { return $scope.sidemenu.isMenuOpened(); }, 
        function() { 
        alert('hi'); 
        }); 

甚至没有isMenuOpened()与上sidemenu刷卡事件被解雇。

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

+0

preopen不会用刷卡开火 – Dan 2015-02-10 00:28:27

回答

0

你需要使用的变量的变化$evalAsync由角

sidemenu.on('preopen', function() { 
      $scope.$evalAsync(function() { 
       $scope.sm_main_cover = true; 
      }); 
     }); 
被消化
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(); 
 
});

希望它可以帮助

+0

我在模板上有一个全局控制器 - 它的在开发中的单页面应用程序 - 所以只有一个指令...点击事件注册没有问题 - 所以角正确观看和更改变量,后开放功能特定于ONSEN-UI,并且不听sidemenu postopen事件 – Dan 2015-02-09 02:55:49

+0

您是否检查了创建侦听器的代码是否已执行并且没有js错误? – 2015-02-09 03:01:44

+0

是的 - 没有错误@AndreasArgelius,你能重现你的错误吗?似乎不是辅助函数在触摸sidemenu时触发,点击注册罚款和辅助功能时,点击.... soooooo工作,onsen-ui +刷卡不听? – Dan 2015-02-10 00:29:32