2012-11-02 65 views
0

中的buttonclick中我正在使用extjs实现项目。我想插入文本框的值到商店上点击确定按钮。我设计的形式原样如何将输入值插入extjs

型号 -

Ext.define('AM.model.User', { 
    extend: 'Ext.data.Model', 
    fields: ['Question', 'Option'] 
}); 

Store-

Ext.create('Ext.data.Store', { 
    model: 'User', 
    proxy: { 
       type: 'localstorage', 
      } 
    autoLoad: true 
}); 

控制器 -

Ext.define('AM.controller.Users', { 
    extend: 'Ext.app.Controller', 
    views: [ 
       'user.List', 
      ], 
    store: ['Users'], 
    model: ['User'], 
    init: function() { 
     this.control({ 
      "button": { 
       click: this.onButtonClick 
      } 
     }); 
     },  
     onButtonClick: function(button){ 
     var form = button.up('form').getForm(); 

     // Validate the form 
     if (form.isValid()) { 
     var values = form.getFieldValues(); 
     store.add ({ 
      Question: values.Question, 
      Option: values.Option 
     }); 
     } 
     else { 
      alert("Insert values in textfields");  
     } 
    } 
    }); 

查看 -

Ext.create('Ext.form.Panel', { 
    title: 'Question-option', 
    width: 300, 
    bodyPadding: 10, 
    renderTo: Ext.getBody(),   
    items: [{ 
     xtype: 'textfield', 
     name: 'Question', 
     fieldLabel: 'Question', 
     allowBlank: false 
    }, 
    { 
     xtype: 'textfield', 
     name: 'Option', 
     fieldLabel: 'Option', 
    }, 
    {xtype: 'button', text: 'Ok'}] 

但是,当我将上面的onbuttonclick动作添加到我的控制器代码中时,它不显示任何输入字段。所以有人可以帮助我,以显示视图并将这些输入插入商店。

+0

对此有帮助吗? http://jsfiddle.net/dbrin/wULET/3/ – dbrin

+0

请查看您以前的问题,并通过点击空心复选标记标记出最佳答案。谢谢。 – dbrin

+0

Thanx dbrin寻求帮助。但链接'jsfiddle.net/dbrin/wULET/3'中给出的例子是存储具有一定的静态值。我想将查看表单的问题和选项的文本框值插入到存储并显示该存储在gridview中。所以请告诉我如何将文本字段输入插入商店。我正在使用localstoragproxy的商店。我的项目代码是上面提供的... –

回答

0

我已经通过上面的代码片段,因为以下原因。
1)Json语法错误。
2)你已经搞砸了Ext.define和Ext.Create

我已更新脚本并在本地机器上测试过它。它的工作!

//控制器 - 应用程序/控制器

Ext.define('AM.controller.Users', { 
     extend: 'Ext.app.Controller', 

     views: [ 
        'user.List' 
       ], 
     stores: ['Users'], 
     models: ['User'], 
     init: function() { 
      console.log('controller initialized'); 
      this.control({ 
       'viewport panel button': { 
        'click': this.onButtonClick 
       } 
      }); 
     }, 

     onButtonClick: function(button, e, eOpts) { 
      var form = button.up('form').getForm(); 
      var model = this.getModel('AM.model.User'); 

      // Validate the form 
      if (form.isValid()) { 
      var question = model.create(form.getFieldValues()); 
      console.log(question.data); 
      } 
      else { 
       alert("Insert values in textfields");  
      } 
     } 

    },function(){ 
     console.log("Users Controller created"); 
    }); 

//视图 - 应用程序/视图/用户/列表

Ext.define('AM.view.user.List', { 
     extend: 'Ext.form.Panel', 
     alias: 'widget.userlist', 
     title: 'Question-option', 
     width: 300, 
     bodyPadding: 10, 
     renderTo: Ext.getBody(),   
     url: 'some url',// in case of ajax 
     // initComponent: function(){ 
     items: [{ 
      xtype: 'textfield', 
      name: 'Question', 
      fieldLabel: 'Question', 
      allowBlank: false // requires a non-empty value 
     }, { 
      xtype: 'textfield', 
      name: 'Option', 
      fieldLabel: 'Option' 
      vtype: 'email' // requires value to be a valid email address format 
     }, 
     { 
     xtype:'button', 
     text:'Save' 

     } 
     ] 

    },function(){ 
    console.log("List view was created"); 
    }); 

更新您的JS文件,并运行!如果您遇到任何问题,请点击此处

+0

Thanx为您提供帮助的是patton sir.but但是当我使用下面的代码完全替换我的控制器并查看文件时,按照Patton先生的规定,但是它不显示任何视图。在cosole窗口输出显示为 - 创建列表视图List.js:28 用户控制器创建Users.js:33 控制器初始化但没有任何输入字段正在显示。 –

+0

嗯,你能告诉我你的Ext.Application代码和视口一起吗? – Patton