范围变量以角度更新,但变化不会反映给用户
scope variable updated in angular but change is not reflected to user
我有一些角度变量设置如下:
$scope.pane = [];
$scope.pane.count = 0;
$scope.pane.max = 5;
然后我在HTML中显示变量,如下所示:
{{pane.count}}
这工作正常,并按预期显示0
。
现在,如果我在任何时候更新变量,更新都会发生(我可以使用console.log看到),但HTML中的打印版本不会更新。
例如
setTimeout(function(){
$scope.pane.count = 1;
},1000);
我使用的是Angular v1.3。我做错了什么?
为了让angular知道更改,您必须使用angular包装器进行超时。
试试这个:
$timeout(function() {
$scope.pane.count = 1;
}, 1000);
通常,当您在angular world之外有一个改变值的结构(如jQuery插件)时,您必须调用$scope$apply()让angular了解它们。
$scope.$apply();
setTimeout在angularjs范围之外,因此需要使用$scope$申请或$timout请参阅下面的示例演示
var app = angular.module('app', []);
app.controller('homeCtrl', function($scope, $timeout) {
$scope.pane = [];
$scope.pane.count = 0;
$scope.pane.count2 = 0;
$scope.pane.max = 5;
setTimeout(function() {
$scope.$apply(function() {
$scope.pane.count = 1;
})
}, 1000);
$timeout(function() {
$scope.pane.count2 = 5;
}, 2000);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="homeCtrl">
<h3>setTimeout</h3>
Count 1: {{pane.count}}<br/>
<h3>$timeout</h3>
Count 2: {{pane.count2}}
</div>
</div>
相关文章:
- JavaScript:为什么不't将背景变化发送给用户's选择(简单)
- 正在给用户第二次尝试
- 读取一个本地文件,编码为base64,我想给用户一个将结果保存到文件的选项
- Ajax/php创建了一个数组——如何以.txt的形式下载给用户
- 在页面显示给用户之前拦截并修改DOM
- 如何将SVG节点转换为PNG并下载给用户
- 如何根据从选择菜单中提供给用户的选项更改网页的背景颜色
- 如何将 json 块作为文件发送给用户
- 如果搜索框位于_SiteLayout页(在页眉 DIV 中),如何将搜索结果返回给用户
- Angularjs 确定呈现给用户的选项卡(指令)
- Javascript函数,可以将包含用户输入的文件下载给用户
- NodeJS编辑二进制文件比将文件返回给用户
- 范围变量以角度更新,但变化不会反映给用户
- Chrome扩展,可以自动提取一些数据并将其显示给用户
- 我可以使用这种消毒液安全地将数据输出给用户吗
- 使用Facebook Javascript SDK发布给用户'的朋友's墙-得到了有效的回应,但帖子没有
- 如何将文件流式传输到服务器,并同步地将其流式传输给用户?(通常文件下载模仿)
- 使用ajax上传图像并显示给用户
- 服务器端生成RSS时出错-返回给用户/RSS阅读器的内容
- 在nodejs中将javascript代码发送给用户之前,我们如何执行它