Sencha Store代理没有被调用

时间:2013-03-05 13:51:19

标签: javascript extjs sencha-touch-2 jsonp

我想动态加载商店数据,不想为此使用模型。如果我提供数据列表被填充,但如果我使用商店的代理它不会被调用,网址没有被命中。请帮忙。

Ext.define('TrainEnquiry.view.SearchTrainResults', {
 extend: 'Ext.List',
    xtype: 'searchedtrainresult',
    requires: 'Ext.data.proxy.JsonP',
    config: {
        itemId: 'searchedtrainresult',
            title: 'Train Result:',
            itemTpl: '<div class="myContent">'+ 
                    '<div><b>{number}</b> </div>' +
                    '</div>',
        store: {
                            fields: ['number'],
                            /*data: [
                                {number: 'Cowper'},
                                {number: 'Everett'},
                                {number: 'University'},
                                {number: 'Forest'}
                            ]*/
                            proxy: {
                                url: 'http://abc.amazonaws.com/search.json',
                                type:'jsonp',
                                extraParams : {
                                                'q' : '12313'
                                            },                             
                                reader: {
                                    type: 'json',
                                },
                                    success: function() {
                                        debugger;
                                             console.log('success');

                                       },
                                       failure: function() {
                                        debugger;
                                              console.log('failure');
                                        }
                        }
                    },

        onItemDisclosure: true


}
});

3 个答案:

答案 0 :(得分:0)

我认为你的“字段”配置选项必须是正确的Ext.data.Field object,所以这可能有用:

Ext.define('TrainEnquiry.view.SearchTrainResults', {
  ...
  config: {
    ...
    store: {
      fields: [ { name: 'number', type: 'string'} ],
      proxy: {
        ...
      }
    },
    ...
  }
});

(参考Sencha forums

答案 1 :(得分:0)

您可以尝试从代理中删除pageParam和startParam。就像这样

Ext.create('Ext.data.Store', {
storeId:'UserStore',

autoLoad: true,

model: 'UserModel',

proxy: {
    type: 'jsonp', // Because it's a cross-domain

    url : 'https://api.twitter.com/1/lists/members.json?owner_screen_name=Sencha&slug=sencha-team&skip_status=true',

    reader: {
        type: 'json',
        root: 'users' // The returned JSON will have array 
                      // of users under a "users" property
    },

    // Removing pageParam and startParam
    pageParam: undefined,
    startParam: undefined
}
});

以下是http://jsfiddle.net/alexrom7/YNTuN/

的示例

答案 2 :(得分:-1)

尝试将代理商店的类型更改为Ajax(类型:'ajax')。就像这样

Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
    type: 'ajax',
    url: '/test.json',
    reader: {
        type: 'json',
    }
},
autoLoad: true
});