官方文档翻译 在Sencha Touch 2中使用表单

移动开发
大多数需要用户输入的应用都会用表单。Sencha Touch表单是对HTML5表单的封装,验证和提交数据有额外选项,用简单的方法把字段布局展现为令人舒服的可视化方式。

创建一个表单

表单面板提供一套表单字段和访问/存储数据的简单方式。通常表单面板只包含你要显示的一套字段,在条目(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),包括针对成功/失败的回调函数,他们是否被调用取决于表单提交是否成功。在数据存储到服务器后,这些回调函数通常用来在你的应用中采取些动作。

查看地址:http://www.html5mobi.com/document/st2/docs/index.html

原文地址:http://www.html5mobi.com/document/st2/docs/index.html#!/guide/forms

责任编辑:佚名 来源: 移动Web开发社区
相关推荐

2011-10-26 10:12:53

Sencha Touc布局

2012-05-01 20:57:26

Sencha Touc

2011-10-26 10:21:40

Sencha Touc组件

2011-10-26 10:43:19

Sencha Touc

2012-01-10 13:21:33

Sencha Touc使用data包

2011-10-26 10:32:05

Sencha Touc数据视图

2011-10-18 09:49:40

新特征Sencha Touc

2012-03-08 22:31:28

Sencha Touc

2011-09-02 15:18:49

Sencha Touc

2011-09-05 11:23:26

EclipseSencha Touc框架

2011-07-26 09:41:50

Sencha Touc特性HTML 5

2010-11-22 10:31:17

Sencha touc

2011-09-05 13:53:08

Sencha Touc列表

2011-09-05 14:09:06

Sencha Touc函数

2011-07-25 15:55:21

Sencha ToucHtml 5

2011-09-02 15:12:29

PhoneGapSencha Touc

2011-09-05 12:49:59

Sencha Touc事件

2011-09-02 16:08:09

Sencha ToucAPI文档

2011-09-02 16:42:51

Sencha ToucWeb应用

2011-08-15 10:14:41

Sencha ToucMyEclipseTomcat
点赞
收藏

51CTO技术栈公众号