2015-01-08 4 views
1

저는 angular.js를 아직 처음 사용하고 있습니다. 이것은 매우 단순해야하는 것처럼 보이지만 나는 혼란 스럽습니다.필드에 사용자 입력이있을 때 ng-model은 값을 변경하지 않습니다.

내가 입력 필드가 있습니다

<input type="text" placeholder="Search" ng-model="search.txt"> 

을 그리고 난 내 컨트롤러에서이 함수를 호출하는 버튼이 NG를 클릭 : 버튼을 클릭

$scope.clearSearch = function() { 
    $scope.search = {txt:"qqqqq"}; 
} 

동작합니다 예상대로 - 입력을 페이지의 값은 "qqqqq"가됩니다. 따라서 데이터 바인딩이 올바른 것처럼 보입니다.

그러나 필드에 아무 것도 입력하지 않고 단추를 누르면 입력 값이 페이지에서 변경되지 않습니다. 입력 필드는 입력 한 값을 유지합니다. 왜 그런가요?

필자가 실제로하려는 것은 필드를 명확히하기 위해서입니다. 그림에 "qqqqq"를 사용하고 있습니다. 값을 null로 설정하는 것은 동일한 동작입니다.

+0

이 작동해야합니까? http://plnkr.co/edit/ –

+1

전체 코드를 알려주십시오. 하위 범위를 만드는 ng-repeat 또는 다른 지시문 안에 있습니까? 컨트롤러의 시작 부분에'$ scope.search = {}; '를 놓고 무슨 일이 일어나는 지보십시오. [plnkr] (http://plnkr.co/edit/53rm586A1F7uDKMYw3cG) – PSL

+0

이것은 이오닉 응용 프로그램 내부에 있으므로 코드 추출에 약간의 작업이 있지만 제안 사항이 효과가 있습니다. 이유를 완전히 이해하지 못합니다. 답변으로 게시하면 받아 들일 것입니다. –

답변

1

그것은 작동 :

스크립트 :

angular.module('myapp',[]) 
      .controller('myctrl',function($scope){ 
       $scope.search = {text:'some input'}; 
       $scope.clearSearch = function() { 
        $scope.search={text:null}; 
       } 
}); 

마크 업 :

<div ng-app="myapp" ng-controller="myctrl"> 
     <input type="text" ng-model="search.text"/> 
     <button ng-click="clearSearch()">clear</button> 
</div> 

In plunker