sim*_*aur 3 javascript angularjs
我有一小段使用setInterval方法的代码:
function MyController($scope) {
$scope.clock = new Date();
var updateClock = function() {
$scope.clock = new Date();
};
setInterval(updateClock, 1000);
};
Run Code Online (Sandbox Code Playgroud)
和html如下:
<!doctype html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
</head>
<body>
<div ng-controller="MyController">
<h1>Hello {{ clock }}!</h1>
</div>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,setInterval在MyController不更新时间.哪里可能有问题?
它按照这本书的方式工作:
function MyController($scope) {
$scope.clock = new Date();
var updateClock = function() {
$scope.clock = new Date();
};
setInterval(function() {
$scope.$apply(updateClock);
}, 1000);
updateClock();
};
Run Code Online (Sandbox Code Playgroud)
如果没有使用@ scope,为什么会出现问题?$ apply?
Tom*_*Tom 10
使用角度$ interval服务.
function($scope, $interval) {
$scope.clock = new Date();
var updateClock = function() {
$scope.clock = new Date();
};
$interval(updateClock, 1000);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 JS setInterval()那么您的方法将需要 $scope.$apply() 。
var updateClock = function() {
$scope.clock = new Date();
$scope.$apply();
};
Run Code Online (Sandbox Code Playgroud)
更好的解决方案是使用$interval (Angular)
$interval(updateClock, 1000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9205 次 |
| 最近记录: |