2017-02-08 5 views
0

누군가 내 코드가 작동하지 않는 이유를 말해 줄 수 있습니까 ?? 나는 "this.username가 정의되어 있지 않습니다"왜 난 정말 이해가 안 얻을riot js 정의되지 않은 값

... 여기 코드

: 당신의 도움에 대한

riot.tag2('test', '<input type="text" name="username" placeholder="username" oninput={validate} value="" /> <h4>{username_valid}</h4>', '', '', function(opts) { 
    this.validate = function(e) { 
     this.username_valid = (this.username.value.length > 3) ? 'Valid' : 'Invalid' 
    }; 
}); 

감사합니다 ..

+0

의 oninput 이벤트

  • 사용 this.root.querySelectorAll('input')[0].value에서 요소를 얻을 수 e.target.value를 사용하는 심판 validate 기능에

  • 에서 값을 얻기 위해 this.refs.username.value를 사용 어떤 Riot 버전을 사용하고 있습니까? v3를 사용하는 경우에는 refs를 사용하여 변수를 참조해야합니다. 그래서 입력에서 ref = "username"을 가지고 this.refs.username.value 메쏘드에 있어야합니다. http://riotjs.com/guide/#named-elements – vitomd

  • 답변

    3

    그냥 읽기가 너무 어렵 기 때문에 riot API를 사용하여 구성 요소를 실제로 작성하지 않았 으면합니다. 태그를 더 잘 볼 수 있도록 태그로 복사했습니다.

    <test> 
    
        <input 
        type="text" 
        name="username" 
        placeholder="username" 
        oninput={validate} 
        value=""/> 
    
        <h4>{username_valid}</h4> 
    
        <script> 
    
        this.validate = function(e) { 
         this.username_valid = (this.username.value.length > 3) ? 'Valid' : 'Invalid' 
        } 
    
        </script> 
    </test> 
    

    입력 요소에서 사용자 이름을 가져 오려고합니다. 태그의 this은 DOM 요소가 아닌 스크립트의 범위를 나타냅니다. 당신이

    1. <input> 태그에 ref='username' 추가 입력 값을 얻을 수있는 몇 가지 방법이 있습니다.
      그런 다음 범위 DOM 쿼리