2014-10-04 44 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