Javascript 将参数绑定到ember组件并从控制器处理它

Javascript 将参数绑定到ember组件并从控制器处理它,javascript,ember.js,Javascript,Ember.js,我想在ember中创建以下组件(templates/components/echo hlabel tf.hbs) 我想从另一个模板(template/programmers.hbs)使用此组件: {{people list title=“程序员列表”people=model}} {{echo-hlabel-tf label=“Textfield水平” textValue=“…” regExp=“^([a-z0-9]{5})$” }} 问题是,即使动作是作为事件触发器触发的,表示输入值(te

我想在ember中创建以下组件(templates/components/echo hlabel tf.hbs)

我想从另一个模板(template/programmers.hbs)使用此组件:

    {{people list title=“程序员列表”people=model}}
{{echo-hlabel-tf label=“Textfield水平” textValue=“…” regExp=“^([a-z0-9]{5})$” }}

问题是,即使动作是作为事件触发器触发的,表示输入值(textValue)的变量始终保持不变(“…”)。看起来外部模板和组件之间的绑定是在开始时创建的,但是如果我在textfield中添加更多的字母,textValue的值将保持不变,不会改变。我想,当我向文本框添加字母时,使用showText方法通过控制台打印它们,但我总是打印“…”

您使用的是纯html5
输入,它本身不进行双向绑定。也就是说,即使您键入了某些内容,它也不会反映到
textValue
属性中。您可以使用ember的内置
input
组件,如下所示。我相信这会解决您的问题。

您的代码中有
on='focusOut'
。你有没有试过keyDown/keypup/keyPress,每按一次键后值都会改变。今天下午我会试试。提前谢谢哇。。。玩旋转游戏,似乎能解决我的问题。最近我会检查一下,因为现在我在另一个环境中。另一方面,我不知道“余烬旋转”。对每个人来说,以这种方式提出问题会更容易。感谢@alptugd给我的答案,感谢你发现了余烬旋转。旋转对于试验来说是伟大的;我强烈推荐它。
<div id="echo-hlabel-tf">
  <span id="tf-label">{{label}}</span>
  <span id="tf-value">
    <input type="text" value={{textValue}}
    {{action "validateRegExp" textValue regExp post on="focusOut"}} 
    {{action "showText" textValue post on="mouseUp"}} 
    />
  </span>
</div>
import Ember from 'ember';

export default Ember.Component.extend({
actions: {
    validateRegExp(text,regExpStr){
        let regExpObj = new RegExp(regExpStr)
        if(regExpObj.test(text)){
            console.log('entry matches')
        }else{
            console.log('entry is wrong');  
        }

    },
    showText(text){
        console.log(text);
    }
}
});
<ul>
 {{people-list title="List of programmers" people=model}}
</ul> 
<div>
 {{echo-hlabel-tf 
    label="Textfield horizontal"
    textValue="..." 
    regExp="^([a-z0-9]{5})$"
 }}
</div>