2016-08-26 3 views
0

저는 Angular를 처음 접했습니다. 다음은 내가 작업중인 컨트롤러입니다 ...각도로 사용되는 객체가 정의되지 않은 이유는 무엇입니까?

관련보기에는 사용자의 전자 메일에 대한 텍스트 입력이 있습니다. Angular use $scope.registrationForm.email.value을 모델로 설정합니다. 이것은 마치 $watch 함수 내부에서 모든 것을 제거한 것처럼 간단한 콘솔 로그를 작성하는 것처럼 보이며 텍스트 입력 값을 변경할 때마다 기록됩니다.

여기에 생각이 비슷합니다 $scope.registrationForm에서 객체를 가지고있다

...

{ 
    email: { 
    value: "[email protected]", 
    valid: true 
    } 
} 
내가 텍스트 영역의 값을보고 시도하고있어

, 이메일을 확인하는 서비스 방법을 사용 , 유효한 경우 의 valid 속성을 true으로 설정하십시오.

불행히도, 난 오류가 받고 있어요 ...

TypeError: Cannot read property 'email' of undefined

내가 명시 적으로 자바 스크립트 registrationForm.email.valid에 정의하지 않으며, 내가보기의 HTML에서 어떤 기준을 만들었습니다.

설정하기 전에이 속성을 만들어야합니까? 여기서 무슨 일이 일어나고있는거야?

답변

1

사용할 수

<script> 
    angular.module('emailExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
     $scope.email = { 
     text: '[email protected]' 
     }; 
    }]); 
</script> 
    <form name="myForm" ng-controller="ExampleController"> 
    <label>Email: 
     <input type="email" name="input" ng-model="email.text" required> 
    </label> 
    <div role="alert"> 
     <span class="error" ng-show="myForm.input.$error.required"> 
     Required!</span> 
     <span class="error" ng-show="myForm.input.$error.email"> 
     Not valid email!</span> 
    </div> 
    <tt>text = {{email.text}}</tt><br/> 
    <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/> 
    <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/> 
    <tt>myForm.$valid = {{myForm.$valid}}</tt><br/> 
    <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/> 
    <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/> 
    </form> 

자세한 내용은 예를 설정하기 전에 속성을 만들어야합니다.

$scope.email={}; 
+1

정확합니다. 내가 한 일은 폼 객체를 생성하는 메소드를 가진 서비스를 만드는 것입니다. 감사. – Allenph

+0

환영합니다. 그래 넌 할수있어. –

1

각도가 이미 그것을 만들기 때문에 이렇게하지 않아도됩니다. 필요한 것은 양식에 대한 속성 이름을 추가하고 입력하는 것입니다. here

관련 문제