【问题标题】:Capture value whenever is-open (view) is changed in angular controllers每当在角度控制器中更改打开(视图)时捕获值
【发布时间】:2016-07-12 12:21:10
【问题描述】:

view.html

<uib-accordion-group heading="Header" is-open="$parent.accordionOpen" ng-click="headerClick()">

app.js

myApp.controller('Controller', ['$scope', function($scope) {

  $scope.accordionOpen = false;

   $scope.$watch('accordionOpen', function(){
    console.log("watch accordionOpen:" +$scope.accordionOpen);
    }, true); 
    console.log("check accordionOpen:" +$scope.accordionOpen);  

  }]);

'检查手风琴打开:'日志总是打印错误。我尝试将 $scope.accordionOpen 值设置为服务设置方法,但这也不起作用。

plunker

打开手风琴后,图标启用并使用 ui-router 加载 Page1.html。在 page1.html 中,我试图在显示数据之前检查手风琴是否打开/关闭。

【问题讨论】:

    标签: angularjs angularjs-scope accordion angularjs-service angular-controller


    【解决方案1】:

    你的代码大致相当于下面的

    myApp.controller('Controller', ['$scope', function($scope) {
    
      $scope.accordionOpen = false;
      console.log("check accordionOpen:" +$scope.accordionOpen);  //moved this line up
    
      $scope.$watch('accordionOpen', function(){
        console.log("watch accordionOpen:" +$scope.accordionOpen);
      }, true);          
    
    }]);
    

    您设置了$scope.accordionOpen = false,然后立即记录该值,这就是它始终为假的原因。我不确定您要在这里完成什么,但您的观察者应该在值发生更改时捕获它。

    从 cmets 更新

    因为您使用的是 ui-router,所以最好的办法可能是监听 $stateChangeSuccess 事件并捕获那里的值

    myApp.controller('Controller', ['$scope', '$rootScope', function($scope, $rootScope) {
    
      $scope.accordionOpen = false;      
    
      $rootScope.$on('$stateChangeSuccess', function(){
        console.log("check accordionOpen:" +$scope.accordionOpen);
        //clear list of accordion elements based on $scope.accordionOpen
      }, true);          
    
    }]);
    

    【讨论】:

    • 我正在尝试检查手风琴打开值以清除路由页面中的元素列表。及以上不起作用。
    • 好的,你能创建一个小提琴或 plunkr 来显示你正在尝试做什么。我不清楚您打算如何使用您提供的代码来实现这一目标。你用的是 ui-router 还是内置路由器?
    • 当路线改变时,您想知道手风琴是打开还是关闭?
    • @Mad-D 检查更新。您可以从 ui-router 监听 stateChangeSuccess 事件并进行相应处理
    • 感谢您的更新,但这并没有成功。我希望在函数之外捕获accordionOpen 值。 Page2 仍然加载错误值。
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多