Sencha Touch JsonP请求TypeError Ext.data未定义

时间:2015-02-10 09:13:32

标签: json sencha-touch sencha-touch-2 jsonp

目前我正在使用我的第一个Sencha Touch应用程序而且我遇到了一个问题,我花了很多时间直到现在。

我试图从跨域Json获取值来填充我的应用程序中的嵌套列表。

当我在浏览器中运行我的代码时,一切正常。列表已填满,我可以点击一个临时实体来调用详细视图。

但是在使用" sencha app build" 构建sencha touch应用程序后,我在启动应用程序时只会在浏览器控制台中收到以下错误。

TypeError: Ext.data is undefined
Ext.data.JsonP.callback1({ Here is the long valid JSON content });

我没有说清楚,为什么Ext.data未定义。如果有人能帮助我,我将不胜感激。我尝试了几种解决方案,但我无法正常运行。

这些是我文件的内容:

商店:

Ext.define("Test.store.ExpStore", {
extend: "Ext.data.TreeStore",

requires: [
    'Ext.data.JsonP'
],

config: {
    model: "Test.model.ExpModel",
    proxy: {
        type: 'jsonp',
        url: 'http://myurl/project/mylist.php',
        callbackKey: 'callback',
        reader: {
            type: 'json',
            rootProperty: 'experts'
        }
    }
}});

型号:

Ext.define('Test.model.ExpModel', {
extend: 'Ext.data.Model',
config: {
    fields: [
        {name: 'name', type: 'string'},
        {name: 'number', type: 'string'},
        {name: 'active', type: 'boolean'}
    ]
}});

的ListView:

Ext.define('Test.view.ExpListView', {
extend: 'Ext.NestedList',
alias: 'widget.expListView',
config: {        
    fullscreen: true,
    title: "Experts",
    displayField: 'name',
    store: 'ExpStore',        
}});

app.json

"js": [
{
    "path": "touch/sencha-touch.js",
    "x-bootstrap": true
},
{
    "path": "bootstrap.js",
    "x-bootstrap": true
},
{
    "path": "app.js",
    "bundle": true,  /* Indicates that all class dependencies are concatenated into this file when build */
    "update": "delta"
}],

app.js

Ext.application({
name: 'Test',

requires: [
    'Ext.MessageBox',
    //'Ext.data.JsonP',
    'Ext.data.*'
],

models: [
    'ExpModel'
],

views: [
    //'Main'
    'ExpDetailsView',
    'ExpListView'
],

controllers: [
    'ExpController'
],

stores: [
    'ExpStore'
],

icon: {
    '57': 'resources/icons/Icon.png',
    '72': 'resources/icons/Icon~ipad.png',
    '114': 'resources/icons/Icon@2x.png',
    '144': 'resources/icons/Icon~ipad@2x.png'
},

isIconPrecomposed: true,

startupImage: {
    '320x460': 'resources/startup/320x460.jpg',
    '640x920': 'resources/startup/640x920.png',
    '768x1004': 'resources/startup/768x1004.png',
    '748x1024': 'resources/startup/748x1024.png',
    '1536x2008': 'resources/startup/1536x2008.png',
    '1496x2048': 'resources/startup/1496x2048.png'
},

launch: function() {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    var expListView = {
        xtype: 'expListView'
    };

    var expDetailsView = {
        xtype: 'expDetailsView'
    };

    // Initialize the main view
    Ext.Viewport.add(expListView, expDetailsView);
},

onUpdated: function() {
    Ext.Msg.confirm(
        "Application Update",
        "This application has just successfully been updated to the latest version. Reload now?",
        function(buttonId) {
            if (buttonId === 'yes') {
                window.location.reload();
            }
        }
    );
}});

0 个答案:

没有答案