【问题标题】:Learning ExtJS, referenceerror issue学习 ExtJS,referenceerror 问题
【发布时间】:2016-04-09 19:00:44
【问题描述】:

我是 ExtJS 的新手。
我不知道为什么这段代码不起作用。
它给了我

ReferenceError: Country is not defined

代码如下:

Ext.define("Continent", {
extend: "Ext.data.Model",
fields: ["name"]
});
Ext.define("City", {
extend: "Ext.data.Model",
fields: ["name"]
});
Ext.define("CountryDetails", {
extend: "Ext.data.Model",
fields: ["id","population"],
});

Ext.define("Country", {
extend: "Ext.data.Model",
idProperty : "name",
fields: ["name", "capital"],
hasMany: [{ name: "cities", model: "City"}],
hasOne: [{model:"CountryDetails"}],
belongsTo: [{ model: "Continent"}],
proxy : {
    type : "memory",
    data : {
    country : {
        name : "France",
        capital : "Paris",
        countrydetails : {
            id : "cd101",
            population : 65436552
        },
        cities : [{name:"Lyon"},{name:"Avignon"}],
        continent : {
            name : "Europe"
        }
    }
},
reader : {
    type : "json",
    root : "country"
    }
}
});

Country.load("France",{
success : function(record){
    var continent = record.getContinent();
    console.log(continent.get("name"));
    var countryDetails = record.getCountryDetails();
    console.log(countryDetails.get("population"));
    var cities = record.cities();
    cities.each(function(city){
        console.log(city.get("name"));
    });
}
});

我从Practical ExtJS 4这本书里抄来的,它不起作用……我对作者不满意……

【问题讨论】:

  • 我猜你错过了var Country = Ext.create('Country'); 或类似的行。 Ext.define 定义一个“类”,Ext.create 创建一个实例。
  • @Alexander 我试过了,但它给了我很多错误。 Suposely 它应该只适用于模型,我想作者不会错过如此明显的东西,比如 .create() 。
  • 代码在 Ext 4.x 中按预期工作 - 您应该尝试在 fiddle 中重现您的错误。
  • 我可以在这里复制它fiddle.sencha.com/#fiddle/18m9
  • @alex9311 对我来说它给了我: Uncaught TypeError: record.getCountryDetails is not a function 。它是否适合您?

标签: extjs extjs4 referenceerror


【解决方案1】:

您的代码运行良好,检查 jsfiddle 链接https://fiddle.sencha.com/#fiddle/1bsc

Ext.application({
name : 'Fiddle',

launch : function() {
    Ext.define("Continent", {
        extend: "Ext.data.Model",
        fields: ["name"]
    });
    Ext.define("City", {
        extend: "Ext.data.Model",
        fields: ["name"]
    });
    Ext.define("CountryDetails", {
        extend: "Ext.data.Model",
        fields: ["id", "population"],
    });
    Ext.define("Country", {
        extend: "Ext.data.Model",
        idProperty: "name",
        fields: ["name", "capital"],
        hasMany: [{
            name: "cities",
            model: "City"
        }],
        hasOne: [{
            model: "CountryDetails"
        }],
        belongsTo: [{
            model: "Continent"
        }],
        proxy: {
            type: "memory",
            data: {
                country: {
                    name: "France",
                    capital: "Paris",
                    countrydetails: {
                        id: "cd101",
                        population: 65436552
                    },
                    cities: [{
                        name: "Lyon"
                    }, {
                        name: "Avignon"
                    }],
                    continent: {
                        name: "Europe"
                    }
                }
            },
            reader: {
                type: "json",
                root: "country"
            }
        }
    });

    Country.load("France", {
        success: function(record) {
            var continent = record.getContinent();
            var countryDetails = record.getCountryDetails();

            document.write(countryDetails.get("population") + '<br />');

            var cities = record.cities();
            cities.each(function(city) {
                document.write(city.get("name") + '<br />');
            });
        }
    });
}
});

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 2013-10-15
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多