2017-09-21 4 views
-2

텍스트 상자가 있고 ng-model이 있다고 가정합니다. 나는 텍스트 상자 undefined.if의 값을 가지고있다. ng-model 이름에 객체 유형을 주면 잘 동작한다.왜 내 angularjs ng-model 값이 정의되지 않았습니까?

HTML

<input type="text" ng-model="search" ng-change="test()"> 

컨트롤러

$scope.test=function() 
{ 
    var val=$scope.search; 
    alert(val); 
} 

우리가 텍스트 상자에 값을 줄 경우 정의되지 않은 항상 경고. 우리는이

$scope.search=33; 
$scope.test=function() 
{ 
     var val=$scope.search; 
     alert(val); 
} 

같은 기능 이외의 값을 주면 그것은

가 지금은 시나리오를 변경 텍스트 상자에 값을 보여줍니다

HTML :

<input type="text" ng-model="search.text" ng-change="test()"> 

컨트롤러 :

$scope.search={'text':''}; 
$scope.test=function() 
{ 
    var val=$scope.search.text; 
    alert(val); 
} 

이제 텍스트 상자의 값을 얻었습니다. 첫 번째 시나리오에서 문제가 무엇입니까?

도와주세요. 미리 감사드립니다.

+2

의 자신의 하위 범위. 따라서 값은 컨트롤러 범위에 저장되는 대신이 하위 scp에 저장됩니다. 당신은 항상 모델을 저장하고 컨트롤러에 객체를 초기화하는 객체를 사용해야합니다. –

+0

코드의 첫 번째 비트는 잘 작동하는 것 같습니다. http://jsfiddle.net/sm20exfe/ – jmona789

+0

첫 번째 비트 코드는 잘 작동합니다. 간단한 테스트 환경에서. 하지만 내 큰 제품에서 나는 작은 부분에서 작동해야하고 거기에서 실행되지 않습니다.하지만 도움을 주셔서 감사합니다. –

답변

0

$scope.search이 개체가 될 것으로 예상되는 경우 $scope.search=33; 또는 $scope.search={'text':''};을 초기화하지 않아도됩니다. 당신이 $scope.search 문자열 싶은 경우

, 당신은 여전히 ​​초기화 할 필요가 없습니다,하지만 ng-modelng-model="search" 대신 ng-model="search.text" 결합을 변경해야합니다.

는 다음과 같은 시도 :

var app = angular.module('app',[]); 
app.controller('ctrl', ['$scope', function($scope) { 
    $scope.testSearchText=function() 
    { 
    var val=$scope.searchText; 
    alert(JSON.stringify(val)); 
    }; 

    $scope.testSearchObject=function() 
    { 
    var val=$scope.searchObj; 
    alert(JSON.stringify(val)); 
    }; 
}]); 

<div ng-app="app"> 
    <div ng-controller="ctrl"> 
    <form> 
     <div> 
     <label for="SearchText">Search Text</label> 
     <input type="text" ng-model="searchText" ng-change="testSearchText()"> 
     </div> 
     <div> 
     <label for="SearchText">Search Object</label> 
     <input type="text" ng-model="searchObj.text" ng-change="testSearchObject()"> 
     </div> 
    </form> 
    </div> 
</div> 

또는 plunker보고 : 문제는 대부분의 아마 귀하의 의견은, NG-경우 NG 반복, 또는 정의하는 또 다른 지시어 안에 있다는 것입니다 https://plnkr.co/edit/LOMlFZsKuPcnJZhtcSuQ?p=preview