Max*_*tin 39 javascript angularjs
我基于创建了基本应用程序 angularjs
HTML:
<div ng-app="miniapp">
<div ng-controller="Ctrl">
My name is
<input type="text"/>
Val: {{val}}
<br/>
<button ng-disabled="val">Submit</button>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var app = angular.module('miniapp', []);
var glob;
function Ctrl($scope) {
glob = $scope;
$scope.val = false;
window.setTimeout(function() {
$scope.val = true;
}, 3000);
}
window.setTimeout(function() {
glob.val = true;
}, 3000);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,我尝试通过2种方式在3秒之后改变val,true但没有人为我工作.真奇怪.我错过了什么?
实际上我在尝试从Ajax获得响应后尝试更改值,但是假设应该是同样的问题.
谢谢,
这是我的例子:http: //jsfiddle.net/6uKAT/20/
Cha*_*ase 76
尝试使用: $timeout
Angular的window.setTimeout包装器.fn函数被包装到try/catch块中,并将任何异常委托给$ exceptionHandler服务.
$timeout(fn[, delay][, invokeApply]);
JavaScript的
var app = angular.module('miniapp', []);
function Ctrl($scope, $timeout) {
$scope.val = false;
$timeout(function(){$scope.val = true}, 3000);
}
Run Code Online (Sandbox Code Playgroud)
Aus*_*eco 27
您正在更改范围之外的范围(在超时内).
所以你应该使用$timeout..否则你必须使用$scope.$apply()
$timeout(function() {
$scope.val = true;
}, 3000);
Run Code Online (Sandbox Code Playgroud)
对于超时使用$timeout,它会打电话$scope.$apply()给你.
同样,对于ajax使用$http.
如果您不能使用这些,那么您必须打电话给$scope.$apply()自己:
window.setTimeout(function() {
$scope.$apply(function() {
$scope.val = true;
});
}, 3000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63006 次 |
| 最近记录: |