Javascript 在Sencha touch的切换字段中设置值
我正在尝试保存sencha中切换字段的值并将该值发送到服务器,现在我正在侦听事件,但它不起作用 我的代码是:Javascript 在Sencha touch的切换字段中设置值,javascript,extjs,sencha-touch,Javascript,Extjs,Sencha Touch,我正在尝试保存sencha中切换字段的值并将该值发送到服务器,现在我正在侦听事件,但它不起作用 我的代码是: onHeaderCompleteDelivery: function (button, oldValue, newValue) { console.log('change fired'); if(oldValue == 0 && newValue == 1){ console.log(oldValue); this.g
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);
}
},
我做错了什么
谢谢 我不太明白您想要完成什么,但看看代码,if和else分支都在执行完全相同的代码,这可能是问题所在
此外,在change事件中,oldValue和newValue参数似乎是颠倒的:newValue参数位于oldValue参数之前(请参见)。很难判断您在做什么,正如Ricardo所提到的:
- 它看起来像您正在收听的togglefield的更改事件
- 但它似乎不是标准事件,因为newValue将是第二个参数,oldValue将是第三个参数
- 您可以使用button来命名触发组件,这可能表示您正在侦听一个按钮,但该按钮没有togglefield的值
如果这确实是togglefield,请重写您的代码,以保持简单
- 我已将您将要设置的值更改为0和1,以显示此时将设置的值
- 我删除了第二个if子句,因为它显然是相反的值
- 我解释了每个值的作用,因为新值在参数中的错误位置
- 如果在这里没有其他意义的话。我加了一个简短的表格
你应该采取不同的方法
- 使用表格
- 将toggelfield放入表单中,并向该字段添加名称
- 点击submit按钮后,从表单获取值(form.getValues())
- 在这些值中,您将拥有togglefield的当前值
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
}
});
Ext.define('App.controller.Main'{
扩展:“Ext.app.Controller”,
配置:{
参考文献:{
提交:“#b提交”,
},
控制:{
submitBtn:{tap:'onSubmitBtnTap'},
}
},
onSubmitBtnTap:功能(btn){
var form=btn.up('.form'),
values=form.getValues();
//在这里,您将获得一个对象
{
名称:“名称字段的值”,
密码:“密码字段的值”,
isActiveToggle:true//是的,可能有点奇怪,我是sencha touch的新手,我的需要是“注册”togglefield新值并将该值发送到后端。这两种情况对我都不起作用,第一种情况发送“未定义”,第二种情况发送模棱两可的消息“”最好的方法是什么?谢谢Proto BassiI我不知道我做错了。但是我无法获取对象(例如),使用getValues()我有一个错误…:-(您可以添加console.dir(表单)和console.dir(值)吗消息是:“无法读取未定义”的属性“getValues”和我的代码:var field=toggle.up('headerCompleteDelivery'),values=field.getValues();console.dir(字段);this.getCmp('headerCompleteDelivery')。setValue(值);console.dir(values);
所以字段是一个表单?正如您所看到的,字段未定义。切换似乎不在HeaderCompletedDelivery中。
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
}
});