2013-12-17 1 views
2

У меня есть список и хочу вернуть некоторую статистику с сервера для выбранных.

Посмотреть

<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() в контроллере. Функция должна запрашивать веб-сервис и возвращать строку после каждой смены модели.

Best, Evgeniy.

+0

показать нам свой код контроллера. И URL-адрес источника, откуда вы хотите получить данные. Ваш url принимает данные в форме получения или отправки? –

+0

Я изменяю пример и добавляю некоторую информацию. – GraDea

ответ

4

При изменении значения вы хотите вызвать веб-сервис для получения результата.

$scope.toggle = function(region) { 
    $http.get('service/resulturl') 
     .success(function(result) { 
      $scope.statistic = result; 
     }); 
}; 

Как вы можете видеть, результат вызова webservice хранится в $ scope.statistic. Это все, что вам нужно, чтобы связать в представлении:

SUMMARY: {{statistic}} 

EDIT:

Вместо того, чтобы полагаться на событие OnChange, вы можете watch модель для изменений:

$scope.$watch('regionId', function() { 
    $http.get('service/resulturl') 
     .success(function(result) { 
      $scope.statistic = result; 
     }); 
}); 

Если вы хотите посмотреть, что массив значений передает третий параметр true функции $ watch для сравнения значений, а не сравнения ссылок.

ДАЛЕЕ EDIT:

Увидели исправленный пример. Вы не хотите, чтобы вызов GetStatistic() отображался в представлении, поскольку это вызывало бы, когда HTTP получал каждый цикл, который был бы совершенно ненужным. Вы должны привязать к значению, которое задается, когда просматриваемое вами значение изменяется и только вызывает HTTP-получение при изменении значения.

+0

Моя модель может измениться с другого места. Я бы не стал устанавливать ng-click в любом месте. – GraDea

+0

@GraDea в этом случае с использованием $ watch, вероятно, будет лучшим способом. –

Смежные вопросы