2014-10-04 42 views
0

我試圖在sencha中保存切換字段的值並將此值發送到服務器,現在我正在偵聽事件但它不工作...在Sencha-touch上的切換字段中設置值

我的代碼是:

onHeaderCompleteDelivery: function (button, oldValue, newValue) { 
    console.log('change fired'); 
    if(oldValue == 0 && newValue == 1){ 
     console.log(oldValue); 
     this.getCmp('headerCompleteDelivery').setValue(oldValue); 
    } 
    else { 
     console.log(oldValue); 
     this.getCmp('headerCompleteDelivery').setValue(oldValue); 
    } 
}, 

我在做什麼錯?

謝謝!

回答

0

很難告訴你在做什麼,李嘉圖提到:

  • 它看起來像你正在聽
  • 一個togglefield的變化情況,但它似乎不是標準的事件作爲NEWVALUE將第二個參數和OLDVALUE第三
  • 你的名字與按鈕發射組件,這可能表明你正在聽一個按鈕,但該按鈕將不會有值一togglefield

這將讓你無處


如果這確實是togglefield請重寫代碼,以保持它的簡單

  • 我已經改變了您要設置爲0和1的值顯示當時將設置的內容。
  • 我去掉了第二個if子句,因爲它顯然是相反的值。
  • 我解釋了每個值在做什麼,因爲您在參數
  • 的錯誤位置上有newValue,否則在這裏沒有意義。我添加了一個簡短的表格

/** 
* togglefield change event 
* 
* @params {object} togglefield 
* @params {number} newValue the value after the change 
* @params {number} oldValue the value before the change 
*/ 
onToggelNameChange: function (togglefield, newValue, oldValue) { 
    console.log('Togglefield ' + togglefiled.getName() + ' fired change event'); 
    console.log('Togglefield is now set to: ' + !(!newValue)); 
    // what is the scope of "this"? you better be sure 
    this.getCmp('headerCompleteDelivery').setValue(newValue); 

    // or you can try this approach. But make sure header has a value config. 
    var header = Ext.Viewport.down('#headerCompleteDelivery'); 
    header.setValue(newValue); 
}, 

你應該用不同的方法去。

  • 使用形式
  • 把toggelfield到表單,並添加一個名字到外地
  • 一旦提交按鈕被打得到的表單中的值(形式。的GetValues())
  • 值內,您將有電流值的togglefield

這裏一個例子:

查看

Ext.define('App.view.Main', { 
    extend: 'Ext.Container', 
    xtype: 'main', 

    config: { 

     items: [ 
      { 
       xtype: 'form', 
       items: [ 
        { 
         xtype: 'textfield', 
         name: 'name', 
        }, 
        { 
         xtype: 'passwordfield', 
         name: 'password' 
        }, 
        { 
         xtype: 'togglefield', 
         name: 'isActiveToggle', 
         label: 'Test Toggle Field' 
        }, 
        { 
         xtype: 'button', 
         itemId: 'btnSubmit', 
         text: 'Submit' 
        } 
       ] 
      } 
     ] 
    } 
}); 

控制器

Ext.define('App.controller.Main', { 
    extend: 'Ext.app.Controller', 

    config: { 
     refs: { 
      submitBtn: '#btnSubmit', 
     }, 
     control: { 
      submitBtn: { tap: 'onSubmitBtnTap'}, 
     } 
    }, 

    onSubmitBtnTap: function (btn) { 
     var form = btn.up('.form'), 
      values = form.getValues(); 

     // here you will get an Object with 
     { 
      name: 'Value of name field', 
      password: 'Value of password field', 
      isActiveToggle: true // <== this is the value you want to send 
     } 

     this.sendDataToServer(values.isActiveToggle); // your Ajax call with toggleValue 
    } 
}); 
+0

是,也許這有點奇怪,我是sencha touch的新手,我的需求是「註冊」切換字段新值並將此值發送到後端。兩種情況它不適合我,第一個發送「未定義」和第二個,一個模糊的消息「」什麼是最好的方式?感謝Proto Bassi – inane 2014-10-06 07:07:30

+0

更新了我的帖子,用我的方式使用它 – Dinkheller 2014-10-06 07:43:20

+0

我不知道我做錯了,但我不能得到一個對象(例如)和getValues()我有一個錯誤... :-( – inane 2014-10-06 08:10:18