2014-03-05 4 views
0

나는이 HTML이 :액세스 UI 요소

<select id="common_commonbundle_standard_address_country" 
     ng-model="common_commonbundle_standard_address.country" 
     required="required" 
     tooltip="País" 
     tooltip-trigger="focus" 
     tooltip-placement="right" 
     wv-def="País" 
     wv-cur="" 
     wv-err="Error!" 
     wv-req="The value you selected is not a valid choice" 
     type="text" 
     class="ng-scope ng-dirty ng-valid ng-valid-required"> 
    ... 
</select> 

을 그리고 나는이 코드를 사용하여 common_commonbundle_standard_address.country의 변화를 감시하기 위해 노력하고있어 :

$scope.$watch('$scope.common_commonbundle_standard_address.country', function(iso_country) { 
    if (iso_country) 
     $http.get(Routing.generate('states') + iso_country).success(function(data) { 
      if (data.message) { 
       $scope.message = data.message; 
      } else { 
       $scope.states = data; 
      } 
     }).error(function(data, status, headers, config) { 
      if (status == '500') { 
       $scope.message = "No hay conexión con el servidor."; 
      } 
     }); 
}); 

을하지만 그것은 작동하지 않습니다, 무엇을 내가 잘못하고있어?

라이트 컨트롤러

app.controller ('NewSeller'기능 ($ 범위, $ HTTP, $ routeParams, $ fileUploader) {

$scope.section = $routeParams.section == undefined ? 'main' : $routeParams.section; 
$scope.aaaa = 'sdsdsdsd'; 

switch ($scope.section) { 
    case 'registro': 
     { 
      $('.seller-menu').animate({left: -230}, 300); 
      $scope.section = 'primer-paso'; 
      break; 
     } 
    case 'segundo-paso': 
     { 
      break; 
     } 
    case 'main': 
    default: 
     { 
      break; 
     } 
} 

// Add watch for states 
$scope.$watch('common_commonbundle_standard_address.country', 
     function(iso_country) { 
      $http.get(Routing.generate('states') + iso_country).success(function(data) { 
       if (data.message) { 
        $scope.message = data.message; 
       } else { 
        $scope.states = data; 
       } 
      }).error(function(data, status, headers, config) { 
       if (status == '500') { 
        $scope.message = "No hay conexión con el servidor."; 
       } 
      }); 
     }, true); 

});

+0

디버거를 사용하여 처리기가 전혀 호출되지 않았는지 또는 처리기에 오류가 있는지 확인 했습니까? –

+2

'$ scope.common_commonbundle_standard_address.country'는 'common_commonbundle_standard_address.country'여야합니다. – Whisher

답변

1

을 시계 식에 포함 할 필요가 없습니다.

$scope.$watch('common_commonbundle_standard_address.country', 
    function(country) { 
     // Do some work here 
    }, true); 
+0

그런 식으로 작동하지 않습니다. – ReynierPM

+0

@ReynierPM - 도움이 될 수있는 답변을 약간 변경했습니다. –

+0

작동하지만이 함수는'common_commonbundle_standard_address.country'에서 아무것도 변경하지 않으면 페이지 eveb를로드 할 때마다 실행됩니다. 왜 그런가요? – ReynierPM