选择下拉列表不会在数组值改变时立即更新
Select dropdown doesn't update itself immediately on change of value of array
我有一个选择下拉菜单,从数组中获取数据。这个数组由server的响应填充:
myApp.controller('mController', function($scope, $routeParams, $http, contextRoot) {
var dataObject = {}
$scope.arr = []
$.post(contextRoot + "/servlet", dataObject, function(dataStr) {
var dataFromServer = $.parseJSON(dataStr);
console.log(dataFromServer);
if (dataFromServer["success"] == 1) {
$scope.arr = dataFromServer["list"]
} else {
alert("Failure! " + dataFromServer["message"])
}
});
});
dataFromServer["list"]
的样本值为:
[" _alerts", " Test2ControlDesk", " aug15test", " sample2", " samplerolDesk"]
问题是下拉菜单在收到响应后不会立即填充,需要一些时间。
html代码如下:
<select class="form-control" ng-model="selectedDataSource" ng-options="item as item for item in arr | orderBy:'toString()' " ></select>
似乎你使用jquery $.post
从服务器获取数据,这是angular知识之外的东西,所以你必须强迫angular在外部进程之后更新作用域,
在ajax成功后使用$scope.$apply();
,如
$.post(contextRoot + "/servlet", dataObject, function(dataStr) {
var dataFromServer = $.parseJSON(dataStr);
console.log(dataFromServer);
if (dataFromServer["success"] == 1) {
$scope.arr = dataFromServer["list"];
$scope.$apply(); // new line
} else {
alert("Failure! " + dataFromServer["message"])
}
});
这里有一篇关于$apply()
的好文章
或BESTWAY IS
使用angular自带的$http
服务
相关文章:
- 变量dos'即使我可以返回更新后的值,也不会改变
- ReactJS:如何在改变状态后立即更新组件
- 是否在应用程序缓存清单更新时更新所有文件?或者只是改变了的那些
- ng节目没有'当我的收音机型号改变时,我不会更新
- 在不改变循环速度的情况下更改更新速度
- 如何更新谷歌地图,如果它的地图画布改变了它的尺寸
- 当模型更新时,backbone和knockout如何使视图改变
- 在ipad上基于方向改变更新值
- Angularjs指令:如何在属性改变后更新模板中的ng-class
- 当变量改变时,在AngularJS中更新视图
- AJAX数据库更新与CSS按钮颜色改变使用Codeigniter
- 当绑定变量改变时,Angularjs选择不更新
- 在AngularJs中,基于指令属性的改变来更新UI
- 为什么knockoutjs js不't更新视图,如果一些子数组被改变
- 当引用对象改变时,react .js视图不更新
- Vue-router 2改变路由,但不更新视图
- 谷歌地图更新标记从改变mysql坐标
- 在Angular和Nodejs应用中,如果我改变了html文件,它也不会更新浏览器
- 更改url后,Angular模型不会改变(更新)
- 在一个选项卡的状态改变后,Onsen选项卡没有正确更新