我有复选框列表,并希望从服务器返回一些统计信息以供选择。
查看
<div ng-app="app" ng-controller="Ctrl">
<input ng-model="regionId">
{{getStatistic()}}
</div>
控制器
angular.module('app', [])
.controller('Ctrl', function($scope, $http) {
$scope.regionId = 'abc';
$scope.getStatistic = function() {
$http.get('serviceUrl', {params:$scope.regionId}).success(
function(data){
return data;
});
//How return data to view?
}
});
如何在控制器中声明函数getStatistic()。该函数必须请求Web服务,并在每次更改模型后返回一个字符串。
最佳, 的Evgeniy。
答案 0 :(得分:4)
当值改变时,您想要调用webservice来获取结果。
$scope.toggle = function(region) {
$http.get('service/resulturl')
.success(function(result) {
$scope.statistic = result;
});
};
如您所见,webservice调用的结果存储在$ scope.statistic中。这就是您在视图中需要绑定的所有内容:
SUMMARY: {{statistic}}
编辑:
您可以watch模型进行更改,而不是依赖于onChange事件:
$scope.$watch('regionId', function() {
$http.get('service/resulturl')
.success(function(result) {
$scope.statistic = result;
});
});
如果您想观看一组值,请将true
的第三个参数传递给$ watch函数,以进行值比较,而不是参考比较。
进一步编辑:
见过你的修改过的例子。您不希望在视图中放置GetStatistic()调用,因为这将触发每个循环的http获取,这将是完全不必要的。您应绑定到当您正在观看的值发生更改时设置的值,并且仅在值更改时触发http get。