ExtJs按ID

时间:2017-06-21 04:33:12

标签: javascript extjs

在ExtJS 6.2.1中,我试图通过使用model.load()函数来获取记录,并且我按照Ext.data.Model doc上的示例,"使用了代理"部分。

这是我的用户模型:

Ext.define('myapp.model.User', {

extend: 'Ext.data.Model',

fields: [
    'id',
    'name',
    'email'
],

proxy: {
    type: 'ajax',
    api: {
        read: '/user'
    },
    reader: {
        type: 'json',
        rootProperty: 'data'
    }
}

});

在视图中,我试图加载id = 1

的用户
    var user = Ext.create('myapp.model.User');
    user.load(1,{
            //scope: this,
            callback: function(record, operation, success) {
                Ext.getCmp('name').setHtml(record.get('name'));
                Ext.getCmp('email').setHtml(record.get('email'));  
            }
        });

但它没有向/ user / 1发送请求,它向/ user

发送了请求

我也尝试了一种不同的方法,在创建用户实例时设置id,并在User模型中引用id,但是它无法获取ID。

如果我在URL中对ID进行硬编码,则可以获得结果,因此主要问题是如何获取ID。

var user = Ext.create('myapp.model.User',{id:1}); 
user.load({
        //scope: this,
        callback: function(record, operation, success) {
                Ext.getCmp('name').setHtml(record.get('name'));
                Ext.getCmp('email').setHtml(record.get('email'));  
            }
        });



proxy: {
    type: 'ajax',
    api: {
        read: '/user/1' // this is working 
        //read: '/user/' + this.id // undefined
        //read: '/user/' + this.get('id') //got error: this.get is not a function
    },
    reader: {
        type: 'json',
        rootProperty: 'data'
    }
}

这样做的恰当方法是,我是否必须创建商店?

1 个答案:

答案 0 :(得分:2)

type:'ajax'的代理,在尝试获取ID为1的用户时,会向

发送请求
/user?_dc=1498020013907&id=1

如果您希望它向

发送请求
/user/1?_dc=1498020013907

您必须使用type:'rest'的代理。