在Sencha Touch 2中使用表单

创建一个表单

表单面板提供一套表单字段和访问/存储数据的简单方式。通常表单面板只包含你要显示的一套字段,在条目(item)配置中的排序如下:

创建一个表单

 
 
  1. Ext.create('Ext.form.Panel', { 
  2.  
  3. fullscreen: true, 
  4.  
  5. items: [ 
  6.  
  7.  
  8. xtype: 'textfield', 
  9.  
  10. name : 'name', 
  11.  
  12. label: 'Name' 
  13.  
  14. }, 
  15.  
  16.  
  17. xtype: 'emailfield', 
  18.  
  19. name : 'email', 
  20.  
  21. label: 'Email' 
  22.  
  23. }, 
  24.  
  25.  
  26. xtype: 'passwordfield', 
  27.  
  28. name : 'password', 
  29.  
  30. label: 'Password' 
  31.  
  32.  
  33.  
  34. }); 

这里我们只是创建了一个简单表单面板,它可以用做注册表单注册到你的服务。我们为用户名字增加个普通文本字段,一个电子邮件字段,最后一个密码字段。在每个case里我们在字段里提供了一个名字配置,这样稍后我们就可以在表单加载或存储数据时标识它。

加载数据

使用上面我们创建的表单,我们可以用几种不同的方法把数据加载进去,最简单的方法就是使用setValues:

 
 
  1. form.setValues({ 
  2.  
  3. name: 'Ed', 
  4.  
  5. email: 'ed@sencha.com', 
  6.  
  7. password: 'secret' 
  8.  
  9. }); 

加载模型实例到表单中也很容易—假如我们有一个用户模型,要把特定的实例加进我们的表单。

 
 
  1. Ext.define('MyApp.model.User', { 
  2.  
  3. fields: ['name', 'email', 'password'] 
  4.  
  5. }); 
  6.  
  7. var ed = Ext.create('MyApp.model.User', { 
  8.  
  9. name: 'Ed', 
  10.  
  11. email: 'ed@sencha.com', 
  12.  
  13. password: 'secret' 
  14.  
  15. }); 
  16.  
  17. form.setRecord(ed); 

检索表单数据

getValues方法可以很方便的从表单面板里取数据:

 
 
  1. var values = form.getValues(); 
  2.  
  3. //values now looks like this: 
  4.  
  5.  
  6. name: 'Ed', 
  7.  
  8. email: 'ed@sencha.com', 
  9.  
  10. password: 'secret' 
  11.  

可以在单独字段上侦听变动事件,从而取得用户变动的及时通知。这里我们扩展上面的用户模型,只要任一字段改变就更新模型。

 
 
  1. var form = Ext.create('Ext.form.Panel', { 
  2.  
  3. listeners: { 
  4.  
  5. '> field': { 
  6.  
  7. change: function(field, newValue, oldValue) { 
  8.  
  9. ed.set(field.getName(), newValue); 
  10.  
  11.  
  12.  
  13. }, 
  14.  
  15. items: //as before 
  16.  
  17. }); 

上面使用了Touch2.0的新功能—可以指定任何容器的子组件上的监听器。在这个case中,我们把监听器绑定到每个表单字段的变动事件,这里的表单字段是表单面板的一个直接子部分。监听器取得触发事件的字段的名字,用新值更新模型实例。例如,改变表单的电子邮件字段将会更新模型的电子邮件字段。

提交表单

有几个提交表单数据的方法。在上面的例子里有一个更新模型实例,可选用模型的save方法把改变传回服务器,而不用传统的表单提交。我们也可以用submit方法发送一个普通浏览器表单提交。

 
 
  1. form.submit({ 
  2.  
  3. url: 'url/to/submit/to', 
  4.  
  5. method: 'POST', 
  6.  
  7. success: function() { 
  8.  
  9. alert('form submitted successfully!'); 
  10.  
  11.  
  12. }); 

在这个case里我们提供url来提交表单到内置的提交调用—你可以在创建表单的时候设置url配置项。我们可以指定其他参数(参照全列表submit),包括针对成功/失败的回调函数,他们是否被调用取决于表单提交是否成功。在数据存储到服务器后,这些回调函数通常用来在你的应用中采取些动作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值