如何使用angularjs在resize上显示div中的window.width

时间:2016-02-17 22:10:46

标签: angularjs controller expression

更新:我真的很感激更有棱角分明的解决方案......虽然我找到了解决问题的方法,但我相信这是一个糟糕的解决方案,因为我基本上只是设置了一个窗口。调整侦听器然后更新我的div的innerhtml ....但我可以用普通的js

我想在调整大小期间有一个不断显示innerWidth的div。

我不相信我需要div的指令才能做到这一点。所以目前我只是在div中放置一个表达式,我认为当同名的$ scope属性更新时会更新:

  <body  ng-app        = "my_app"
         ng-controller = "my_controller">
    <div>{{the_width}}</div>
  </body>

  <script>
    var gvo_app  = angular.module( "my_app" , [] ) ;
    gvo_app
      .controller( "my_controller" ,
                   function( $window , $scope ) 
                      { angular
                          .element($window)
                            .on( 'resize' ,
                                  function( ) 
                                    { console.log('resize : ' + $window.innerWidth);
                                      $scope.the_width = $window.innerWidth ;
                                    }
                                )
                      }
                  )
  </script>

我的plunker

1 个答案:

答案 0 :(得分:-1)

我需要:$scope.$digest();

<script>
    var gvo_app  = angular.module( "my_app" , [] ) ;
    gvo_app
      .controller( "my_controller" ,
                   function( $window , $scope ) 
                      { angular
                          .element($window)
                            .on( 'resize' ,
                                  function( ) 
                                    { console.log('resize : ' + $window.innerWidth);
                                      $scope.the_width = $window.innerWidth ;
                                      $scope.$digest() ; // <<<<------
                                    }
                                )
                      }
                  )
  </script>

我是怎么犯这个错误的?

过去几天我一直在研究的所有引入的angularjs示例都显示了<input>元素中的大多数数据绑定。事实证明,<input>元素是角度的特殊情况,因此角度会自动创建一个侦听器并在状态更改时调用它。我原以为只在任何元素上使用绑定表达式{{my_variable}},例如<div>,就可以完成这个......但是没有。

我需要强迫角度来调用听众,这是使用角度&#39;服务&#39; .$digest()(实际上强制角度来看每个听众,以圆周方式完成),并调用自上一个.digest()以来发生过变化的所有内容。

article解释了$ watch和$ digest ... (棱角分明似乎没有使用“听众”这个术语,而是“观看”,“消化”只需冲洗所有的&#39;观看是否已被更改