课程表

Ember.js 基础

Ember.js 对象模型

Ember.js handlebars模板

Ember.js 路由

Ember.js 组件

Ember.js 控制器

Ember.js 模型

Ember.js 测试

工具箱
速查手册

handlebars表单元素

当前位置:免费教程 » JS/JS库/框架 » Ember.js

Ember提供的表单元素都是经过封装的,封装成了view组件。经过解析渲染之后就会生成普通的HTML标签。更多详细信息你可以查看他们的实现源码:Ember.TextFieldEmber.ChechboxEmber.TextArea

按照惯例,先创建一个route
ember generate route form-helper

1,input助手

  1. {{! //app/templates/form-helper.hbs }}
  2. {{input name="username" placeholder="your name"}}

其中可以使用在input助手上的属性有很多,包括readonlyvaluedisabledname等等,更多有关的属性介绍请移步官网介绍
注意:对于使用在input助手上的属性是不是使用双引号括住是有区别的。比如value='helloworld'value=helloworld渲染之后的结果是不一样的,第一种写法是直接把"helloworld"这个字符串赋值设置到value上,第二种写法是从上下文获取变量helloworld的值再设置到value上,通常是在controller或者route设置的值。
看下面2行代码的演示结果:

  1. {{input name="username" placeholder="your name" value="model.helloworld"}}
  2. <br><br>
  3. {{input name="username" placeholder="your name" value=model.helloworld}}

修改对应的route类,重写model回调,返回一个字符串;或者你可以在模板对应的controller类设置。比如下面的第二段代码(使用命令ember generate controller form-helper得到模板对应的controller类。 )。

  1. // app/routes/form-helper.js
  2. import Ember from 'ember';
  3. export default Ember.Route.extend({
  4. model: function() {
  5. return { helloworld: 'The value from route...' }
  6. }
  7. });

controller类初始化测试数据。

  1. // app/controllers/form-helper.js
  2. import Ember from 'ember';
  3. export default Ember.Controller.extend({
  4. helloworld: 'The value from route...'
  5. });

对应的,如果你使用的是controller初始化测试数据,那么你的模板获取数据的方式就要稍微修改下。需要去掉前缀model.controller不需要在回调中初始化测试数据,可用直接定义成controller的属性。

  1. {{input name="username" placeholder="your name" value=helloworld}}

运行结果

2,在input助手上指定触发事件

你可以想想下,我们平常写过的javascript代码,不是可用直接在input输入框上使用javascript的函数,同理的,input助手上可以使用javascript函数,不过使用方式有点差别,请看下面示例。比如按enter键触发指定的事件、失去焦点触发事件等等。 首先编写input输入框,获取input输入框的值有点不按常理=^=。在controller类获取input输入框的值是通过不用双引号的value属性获取的。

  1. 按enter键触发
  2. {{input value=getValueKey enter="getInputValue" name=getByName placeholder="请输入测试的内容"}}
  1. // app/controllers/form-helper.js
  2. import Ember from 'ember';
  3. export default Ember.Controller.extend({
  4. actions: {
  5. getInputValue: function() {
  6. var v = this.get('getValueKey');
  7. console.log('v = ' + v);
  8. var v2 = this.get('getByName');
  9. console.log('v2 = ' + v2);
  10. }
  11. }
  12. });

输入测试内容后按enter键。

run result

最后的输出结果有那么一点点意外。v的值是正确的,v2却是undefined。可见在controller层获取页面的值是通过value这个属性而不是name这个属性。跟我们平常HTML的input有点不一样了!!这个需要注意下。

3,checkbook助手

checkbox这个表单元素也是经过Ember封装了,作为一个组件使用。使用过程需要注意的问题与前面的input是一样的,属性是不是使用双引号所起的作用是不一样的。

  1. checkbox{{input type="checkbox" checked=isChecked }}

你可以在controller增加一个属性isChecked并设置为truecheckbox将默认为选中。

  1. // app/controllers/form-helper.js
  2. import Ember from 'ember';
  3. export default Ember.Controller.extend({
  4. actions: {
  5. // ……
  6. },
  7. isChecked: true
  8. });

result

4,textarea助手

  1. {{textarea value=key cols="80" rows="3" enter="getValueByV"}}

同样的也是通过value属性获取输入的值。

本篇简单的介绍了常用的表单元素,使用的方式比较简单,唯一需要注意的是获取的输入框输入值的方式与平常使用的HTML表单元素有点差别。其他的基本上与普通的HTML表单元素没什么差别。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号