Javascript setTimeout()在angularjs中不工作?
AngularJSs的新成员。想知道为什么Javascript setTimeout()在angularjs中不工作?,javascript,html,angularjs,Javascript,Html,Angularjs,AngularJSs的新成员。想知道为什么setTimeout不起作用。它对AngularJS不起作用是真的吗 var myApp=angular.module('myApp',[]); 函数MyCtrl($scope){ //$scope.typeOptions=[]; 警报(“hi23”); $timeout(函数(){ 警报(“hi”); $scope.typeOptions= [ {name:'Feature',value:'Feature'}, {name:'Bug',value:
setTimeout
不起作用。它对AngularJS不起作用是真的吗
var myApp=angular.module('myApp',[]);
函数MyCtrl($scope){
//$scope.typeOptions=[];
警报(“hi23”);
$timeout(函数(){
警报(“hi”);
$scope.typeOptions=
[
{name:'Feature',value:'Feature'},
{name:'Bug',value:'Bug'},
{name:'Enhancement',value:'Enhancement'}
];
$scope.form=$scope.typeOptions[1]。值;
}, 3000);
}
谢谢。您需要注入
$timeout
。观察以下变化
function MyCtrl($scope, $timeout) {
....
}
有关更多信息,请参阅
此外,不建议使用这种声明控制器的方式。我会鼓励对以下内容进行重新细分
myApp.controller('MyCtrl', ['$scope', '$timeout', function($scope, $timeout) {
....
}]);
Angular有一个观察者列表,它是将视图与其模型绑定在一起的所有变量和对象。Angular一直在侦听更改其中任何一个的事件,并开始一个摘要周期以使用新值更新DOM 使用setTimeout时,它会异步运行,并且Angular不会监视setTimeout中的所有代码,即使它可能正在更改Angular范围值之一 因此,您可以按照上面的建议使用$timeout,也可以将setTimeout代码包装在$scope.$apply中,这会告诉Angular也要注意它
对于Angular应用程序中可能使用的任何外部Jquery库,这也是一个很好的实践。尽管推荐的方法是为此类库使用角度包装。除了sal niro所说的,您还需要启动控制器。角度.module('myApp').controller('MyCtrl',MyCtrl);谢谢大家!以下是使用您推荐的样式的工作版本的链接:这是一篇关于使用
$timeout
和$interval
myApp.controller('MyCtrl', ['$scope', '$timeout', function($scope, $timeout) {
....
}]);