2013-12-17 2 views
2

나는 체크 박스 목록을 가지고 있고 서버의 일부 통계를 반환하고 싶다.

보기 내가 컨트롤러 기능 getStatistic()를 선언 할 수있는 방법

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

    } 
}); 

. 이 함수는 웹 서비스를 요청하고 모델이 변경 될 때마다 문자열을 반환해야합니다.

최고, Evgeniy.

+0

우리에게 당신의 컨트롤러 코드를 보여줍니다. 그리고 당신이 원하는 곳에서 소스를 얻을 수있는 곳의 URL. 귀하의 URL은 가져 오기 또는 게시 양식에서 데이터를 수락합니까? –

+0

예를 변경하고 몇 가지 정보를 추가하십시오. – GraDea

답변

4

값이 변경되면 웹 서비스를 호출하여 결과를 가져 오려고합니다.

위와 같이 webservice 호출 결과는 $ scope.statistic에 저장됩니다. 이것은 당신이보기에 바인딩하는 데 필요한 모든 것입니다 :

SUMMARY: {{statistic}} 

편집 :

보다는 OnChange 이벤트에 의존, 당신은 변경 모델 watch 수 있습니다 : 당신이 경우

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

을 값의 배열을보고 싶다면 true의 세 번째 매개 변수를 $ watch 함수에 전달하여 참조 비교 대신 값 비교를 수행하십시오.

더 편집 :

개정 된 예를 보았습니다. 뷰에 GetStatistic() 호출을 두지 않으려 고하면, http get은 완전히 불필요한 모든주기를 트리거합니다. 보고있는 값이 변경 될 때 설정된 값에 바인딩하고 값이 변경 될 때만 http get을 트리거해야합니다.

+0

내 모델이 다른 곳에서 바뀔 수 있습니다. 나는 모든 장소에서 앤 클릭을 설정하지 않을 것입니다. – GraDea

+0

@GraDea는 $ watch를 사용하면 더 좋은 방법 일 것입니다. –

관련 문제