更新:我真的很感激更有棱角分明的解决方案......虽然我找到了解决问题的方法,但我相信这是一个糟糕的解决方案,因为我基本上只是设置了一个窗口。调整侦听器然后更新我的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
答案 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;观看是否已被更改