Javascript 将参数绑定到ember组件并从控制器处理它
我想在ember中创建以下组件(templates/components/echo hlabel tf.hbs) 我想从另一个模板(template/programmers.hbs)使用此组件: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
{{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>