2012-11-02 101 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