Javascript SyntaxError:function语句需要ExtJs中的名称

Javascript SyntaxError:function语句需要ExtJs中的名称,javascript,checkbox,extjs4,Javascript,Checkbox,Extjs4,我喜欢从ExtJs中的JSon响应填充checkboxgroup。当点击发送按钮时,它将在控制台中显示响应 Ext.define('myclass', { extend: 'Ext.form.Panel', initComponent: function(){ Ext.apply(this, { renderTo: Ext.getBody(), title: 'Message', tbar: [{ text: 'Send', handler: function(){ co

我喜欢从ExtJs中的JSon响应填充checkboxgroup。当点击发送按钮时,它将在控制台中显示响应

Ext.define('myclass', {
extend: 'Ext.form.Panel',
initComponent: function(){
Ext.apply(this, {
renderTo: Ext.getBody(),
title: 'Message',
tbar: [{
    text: 'Send',
    handler: function(){
    console.log(this.getValues());
    },
    scope: this
}],
items: []
});
    this.callParent(arguments);
}
});
    var messagePanel = new myclass();

loadCheckboxes : function(){
Ext.Ajax.request({
    url: 'recipients.json',
    success: function(response){
        console.log(response);
    },
    scope: this
    });
}

this.loadCheckboxes();

onLoad : function(response){
var jsonResponse = Ext.decode(response.responseText);
    if (jsonResponse.success) {
    // success
    console.log(jsonResponse);
    }
}

    Ext.Ajax.request({
    url: 'recipients.json',
    success: onLoad(),
    scope: this
    });

var checkboxGroup = {
xtype: 'checkboxgroup',
columns: 2,
fieldLabel: 'Recipients',
name: 'recipients',
style: {
padding: '10px'
},
items: []
};
this.add(checkboxGroup);

var i, len = jsonResponse.recipients.length, recipient;
for (i = 0; i < len; i++) {
recipient = jsonResponse.recipients[i];
    checkboxGroup.items.push({
    xtype: 'checkbox',
    boxLabel: recipient.fullName,
    name: 'recipients',
    inputValue: recipient.userID,
    checked: recipient.selected
    });
}
当我运行此代码时,在控制台中显示错误。 SyntaxError:function语句需要名称 加载复选框:函数(){


请建议我解决此问题的方法。

您似乎正在尝试定义对象的键值:

loadCheckboxes : function(){
    // ...
}
但是,这些应作为声明的变量或函数:

var loadCheckboxes = function () {
    // ...
};

function loadCheckboxes() {
    // ...
}
因为它们不在--
{…}
--语法
name:value
将定义设置为的对象的键,该键可以是匿名的


相反,它们后面是,不能是匿名的。

您似乎试图定义对象的键值:

loadCheckboxes : function(){
    // ...
}
但是,这些应作为声明的变量或函数:

var loadCheckboxes = function () {
    // ...
};

function loadCheckboxes() {
    // ...
}
因为它们不在--
{…}
--语法
name:value
将定义设置为的对象的键,该键可以是匿名的


相反,它们后面是,不能是匿名的。

检查这是如何为您工作的

Ext.define('myclass', {
    extend: 'Ext.form.Panel',
    initComponent: function() {
        Ext.apply(this, {
            renderTo: Ext.getBody(),
            title: 'Message',
            tbar: [
                {
                    text: 'Send',
                    handler: function() {
                        console.log(this.getValues());
                    },
                    scope: this
                }
            ],
            items: [
                {
                    xtype: 'checkboxgroup',
                    columns: 2,
                    fieldLabel: 'Recipients',
                    name: 'recipients',
                    style: {
                        padding: '10px'
                    },
                    items: []
                }
            ]
        });
        this.callParent(arguments);
    },
    onLoad: function(response) {
        var jsonResponse = Ext.decode(response.responseText);
        if (jsonResponse.success) {
            // success
            console.log(jsonResponse);
            var i, len = jsonResponse.recipients.length, recipient;
            var checkboxGroup = this.down('checkboxgroup[name="recipients"]');
            for (i = 0; i < len; i++) {
                recipient = jsonResponse.recipients[i];
                checkboxGroup.add({
                    xtype: 'checkbox',
                    boxLabel: recipient.fullName,
                    name: 'recipients',
                    inputValue: recipient.userID,
                    checked: recipient.selected
                });
            }
        }
    }
});

var messagePanel = new myclass();

function loadCheckboxes() {
    Ext.Ajax.request({
        url: 'recipients.json',
        success: function(response){
            console.log(response);
        }
        // , scope: this <-- you don't need scope here, you are not in a class
    });
}

loadCheckboxes(); // <-- I assume this call and the next are for debugging pourposes

Ext.Ajax.request({
    url: 'recipients.json',
    success: messagePanel.onLoad,
    scope: messagePanel
});
Ext.define('myclass'{
扩展:“Ext.form.Panel”,
initComponent:function(){
Ext.apply(本{
renderTo:Ext.getBody(),
标题:“消息”,
待定:[
{
文本:“发送”,
处理程序:函数(){
log(this.getValues());
},
范围:本
}
],
项目:[
{
xtype:“checkboxgroup”,
栏目:2,
fieldLabel:“收件人”,
姓名:'收件人',
风格:{
填充:“10px”
},
项目:[]
}
]
});
this.callParent(参数);
},
onLoad:函数(响应){
var jsonResponse=Ext.decode(response.responseText);
if(jsonResponse.success){
//成功
log(jsonResponse);
变量i,len=jsonResponse.recipients.length,recipient;
var checkboxGroup=this.down('checkboxGroup[name=“recipients”]”);
对于(i=0;i//,范围:这检查这对您的作用

Ext.define('myclass', {
    extend: 'Ext.form.Panel',
    initComponent: function() {
        Ext.apply(this, {
            renderTo: Ext.getBody(),
            title: 'Message',
            tbar: [
                {
                    text: 'Send',
                    handler: function() {
                        console.log(this.getValues());
                    },
                    scope: this
                }
            ],
            items: [
                {
                    xtype: 'checkboxgroup',
                    columns: 2,
                    fieldLabel: 'Recipients',
                    name: 'recipients',
                    style: {
                        padding: '10px'
                    },
                    items: []
                }
            ]
        });
        this.callParent(arguments);
    },
    onLoad: function(response) {
        var jsonResponse = Ext.decode(response.responseText);
        if (jsonResponse.success) {
            // success
            console.log(jsonResponse);
            var i, len = jsonResponse.recipients.length, recipient;
            var checkboxGroup = this.down('checkboxgroup[name="recipients"]');
            for (i = 0; i < len; i++) {
                recipient = jsonResponse.recipients[i];
                checkboxGroup.add({
                    xtype: 'checkbox',
                    boxLabel: recipient.fullName,
                    name: 'recipients',
                    inputValue: recipient.userID,
                    checked: recipient.selected
                });
            }
        }
    }
});

var messagePanel = new myclass();

function loadCheckboxes() {
    Ext.Ajax.request({
        url: 'recipients.json',
        success: function(response){
            console.log(response);
        }
        // , scope: this <-- you don't need scope here, you are not in a class
    });
}

loadCheckboxes(); // <-- I assume this call and the next are for debugging pourposes

Ext.Ajax.request({
    url: 'recipients.json',
    success: messagePanel.onLoad,
    scope: messagePanel
});
Ext.define('myclass'{
扩展:“Ext.form.Panel”,
initComponent:function(){
Ext.apply(本{
renderTo:Ext.getBody(),
标题:“消息”,
待定:[
{
文本:“发送”,
处理程序:函数(){
log(this.getValues());
},
范围:本
}
],
项目:[
{
xtype:“checkboxgroup”,
栏目:2,
fieldLabel:“收件人”,
姓名:'收件人',
风格:{
填充:“10px”
},
项目:[]
}
]
});
this.callParent(参数);
},
onLoad:函数(响应){
var jsonResponse=Ext.decode(response.responseText);
if(jsonResponse.success){
//成功
log(jsonResponse);
变量i,len=jsonResponse.recipients.length,recipient;
var checkboxGroup=this.down('checkboxGroup[name=“recipients”]”);
对于(i=0;i//,作用域:这个缩进很好
var messagePanel=new myclass();
loadcheckbox:function(){
不能同时有效。一个是变量声明(在对象文本中无效),另一个是对象文本键或标签+匿名函数声明(这是不允许的,与匿名函数表达式不同)。建议我解决此问题的工作方案。一些缩进很好
var messagePanel=new myclass();
加载复选框:函数(){
不能同时有效。一个是变量声明(在对象文本中无效),另一个是对象文本键或标签+匿名函数声明(与匿名函数表达式不同,这是不允许的)。建议我解决这个问题。@MuhammadUsama那么你应该自己写一本关于编程的书。这个答案很好地解释了这一点well@MuhammadUsama那么你应该自己写一本关于编程的书。这个答案很好地解释了它。优秀的Diego L Espiñeira.TLDR代替了解释地球理论:穆罕默德·乌萨马要求一本书这是一个有效的解决方案