AngularJS:从http GET(来自REST服务)检索到的JSON数据中显示一个选择框
AngularJS: display a select box from JSON data retrieved by http GET (from REST service)
我有一个REST服务,它返回一个json字符串,该字符串只是一组字符串(我使用Gson生成这个字符串(Gson.toJson(mySetOfStrings))
所以我添加到我的index.html:
<div ng-controller="ListOptionsCtrl">
<form novalidate>
<button ng-click="refreshList()">refresh</button>
<select name="option" ng-model="form.option" ng-options="o.n for o in optionsList></select>
</form>
</div>
在我的脚本中:
var ListOptionsCtrl = function ListOptionsCtrl($scope, $http) {
$scope.refreshList = function() {
$http({
method: 'GET'
url: '*someurl*'
}).
success(function(data) {
$scope.optionsList = angular.fromJson(data);
});
};
}
不幸的是,在我的选择框中产生的所有这些都是一个空列表。当我看到对GET请求的响应是什么时,它会返回一个包含内容的json字符串,所以我不明白为什么没有向这个元素添加任何内容。我在这里做错了什么?感谢
这是因为Angular还不知道您的更改。因为Angular允许将任何值用作绑定目标。然后,在任何JavaScript代码转换结束时,检查该值是否已更改。
您需要使用$apply
var ListOptionsCtrl = function ListOptionsCtrl($scope, $http) {
$scope.refreshList = function() {
$http({
method: 'GET'
url: '*someurl*'
}).
success(function(data) {
$scope.$apply(function () {
$scope.optionsList = angular.fromJson(data);
});
});
};
}
试试这个。
关于它如何工作以及为什么需要它的更多信息,请访问Jim Hoskins的文章
在执行$apply之前,您应该执行if(!$scope.$$phase){…}来检查$digest错误。
success(function(data) {
if(!$scope.$$phase) {
$scope.$apply(function () {
$scope.optionsList = angular.fromJson(data);
});
}
});
相关文章:
- 无法使用变量访问数据 JSON
- 使用 ng-repeat解析不均匀数据/ json对象
- 在没有jsonp的情况下从另一个域获取数据(json格式)
- 如何获取带参数的数据json
- 如何在android中显示实时雅虎金融股票数据..json格式如下所示
- 使用 JavaScript 将数据 json 显示到网页中
- 高位图表来源于API数据(JSON)
- 使用动态数据json初始化同位素
- Django:将数据JSON从视图传递给javascript
- 存储配置数据 (json)
- 未捕获的SyntaxError:意外的标识符图像数据json
- 接收数据json/jquery
- Jquery数据表数据json
- 不能在cakephp中使用数组数据json
- 在不锁定浏览器的情况下,将大数据JSON从REST请求反序列化为对象
- 如何读取数据JSON格式数组的字符串数据
- 我有一个流星应用程序,需要从/public/_assets/results/mmresults读取数据.Json文件,在
- 数据json不显示在html
- 使用2个下拉列表创建2个并排的表行来比较数据- JSON
- 需要将复杂的json对象转换为合适的angularjs UI树数据json结构