2013-10-20 4 views
0

이 부분은 fiddle을 참조하십시오. 필드에 포커스가 있으면 드롭 다운 상자가 나타납니다. 드롭 다운 상자에서 요소를 클릭하면 값이 모델 (categoryFilter)에서 업데이트되고 모델 상태는 ng-invalid에서 ng-valid으로 업데이트됩니다. 값을 제거하면 ng-invalid으로 돌아가고 값을 다시 선택하면 ng-valid으로 돌아갑니다. 즉, 완벽하게 작동합니다.각도 요소가 컨트롤러에서 업데이트 된 후에 양식 요소가 유효하지 않습니다.

나는이 코드를 제 코드에 따라 만들었습니다. 내 코드 (컨트롤러 + 양식)가 정확히 동일하지만 항목을 선택하고 지우고 항목을 다시 선택한 후 어떤 이유로 든 필드는 ng-invalid으로 유지됩니다. go here 인 경우이 값을 직접 확인하여 값을 선택하고 제거한 다음 다시 선택하십시오. 양식 + 컨트롤러는 동일하지만 상태는 ng-invalid으로 표시됩니다. 문제가 어디 있니?

desktop.controller('StartClubModalController', function ($scope,$http,$modalInstance) { 


    $scope.$watch('categoryFilter', function(value) { 
     angular.element(categoryFilter).val(value); 
    }); 

    $scope.categories = [{"Category":{"id":"6","category":"Community"}},{"Category":{"id":"4","category":"Competitions"}},{"Category":{"id":"5","category":"Crossfit"}},{"Category":{"id":"2","category":"Fitness"}},{"Category":{"id":"3","category":"Sport"}},{"Category":{"id":"1","category":"Workout"}}]; 

    $scope.categoryDropDownClickEvent = function(value) {     
     $scope.categoryFilter = value; 
    }; 

}); 

답변

0

먼저 DOM을 컨트롤러로 조작하는 것은 바람직하지 않습니다. 모든 DOM 조작/업데이트가 지시어로 구현됩니다. 지시문은 AngularJS를 사용하는 동안 jQuery 코드를 작성해야하는 곳입니다.

둘째, categoryFilterng-model 그래서 당신이 $watch를 사용할 필요가 없습니다 것입니다 :

$scope.$watch('categoryFilter', function(value) { 
     angular.element(categoryFilter).val(value); 
    }); 

그것을 제거합니다. (자세한 것은 Angular의 장점입니다.)

언제든지 categoryFilter이 자동으로 업데이트되어야합니다.

이 데모 Fiddle

+0

감사를 고정 참조, 내가 지시문에 넣어해야 참으로 사실이다. 그게 내 계획 이었어. 'watch '를 제거하는 것에 관해서, 제가 그것을 제거했을 때 그것은 당신이 항목을 두번 선택하면 모델이 갱신되지 않게됩니다. 이 코드는 동일하지만 내 앱에서만 발생하며 피들링에서는 발생하지 않습니다. S. 나는이 문제와 관련이 있다고 생각한다. [여기] (http://www.workoutcrowd.com/users/20/name+lastlkj)를 확인하고 무언가를 선택하고 제거한 다음 다시 선택하십시오. 나에게 정신 나간다. – user2899800

+0

이상하게도 유일한 방법은 사이트에서 가져 오기를 사용 중지하는 것입니다. –

+0

Angular에 대해 마지막 안정 버전 1.2.0-rc.3을 사용해 보셨습니까? –

관련 문제