绑定到函数,从$ http.get获得结果

时间:2013-12-17 08:42:37

标签: ajax angularjs

我有复选框列表,并希望从服务器返回一些统计信息以供选择。

查看

<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。

1 个答案:

答案 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。