0

我需要将附加参数传递给球衣服务器。但是我如何提交我的网址,例如..get/{param1}/{param2}/{param3}

这是我的js文件

  Ext.define('bluebutton.view.BlueButton.testing', {
    extend: 'Ext.form.Panel',
    xtype: 'testing',
       requires: [

    'bluebutton.view.BlueButton.TransactionList',
    'bluebutton.view.BlueButton.MemberPopUp',
     'bluebutton.view.BlueButton.MemberDetail',
     'bluebutton.store.BlueButton.MemberList',

    ],
    config: {
     id:'register',
        items :[

              {
                    xtype: 'textfield',
                    name: 'name',
                    label: 'Name'
                },
                {
                    xtype: 'emailfield',
                    name: 'email',
                    label: 'Email'
                },

                 {
                    xtype: 'button',
                    text: 'Send',
                    handler: function(button) {
                        var form = Ext.getCmp('register');
                          values = form.getValues();






//        Select record
        //If load data , restful will using "get",  url will be /users/1
        var User = Ext.ModelMgr.getModel('bluebutton.model.BlueButton.MemberList');
        User.load(123,
         {
            success: function(user) {
            alert(user.get('fullName'));




            }
        }
        );



                    }
                }


        ],


   }

});

模型.js

Ext.define('bluebutton.model.BlueButton.MemberList', {
    extend: 'Ext.data.Model',
    config: {
        idProperty: 'memberModel',
        fields: [
            { name: 'fullName' },
            { name: 'singer' },

        ],

        proxy: {
            type: 'rest',
           url: 'http://localhost:8080/RESTFulExample/rest/json/metallica/get',
            reader: 'json',
            actionMethods: {
                create: 'GET',
                read: 'POST',
                update: 'PUT',
                destroy: 'DELETE'
            },



            reader: {
                type: 'json',

            },

            writer: {
                type: 'json',

            },
        }

    }

});

但现在我只能传递我的网址,如..get/123请指导我一些解决方案。谢谢

4

2 回答 2

2

我想到了两件事,首先不要在模型定义中编写代理,而是将其设置在 store 的初始化函数中,您可以在其中查看配置数据并在其基础上创建 url。例如

initialize: function() {
        var myId = this.config.uid;
        this.setProxy({
        type: 'rest',
        url: 'http://localhost:8080/RESTFulExample/rest/json/metallica/get/'+myId,
        reader: 'json',
        actionMethods: {
            create: 'GET',
            read: 'POST',
            update: 'PUT',
            destroy: 'DELETE'
        },
        reader: {
            type: 'json',

        },
        writer: {
            type: 'json',

        },
    });
}

当您创建这样的商店时,您可以传递 id 来加载:

    var memberStore = Ext.create('bluebutton.store.BlueButton.MemberList', {
        uid : 123
    });

第二种方法可能是编写您自己的代理扩展Ext.data.proxy.Rest和实现buildUrl,以便它检查数据并将其附加到 url。例如

buildUrl: function(request) {
    var me      = this,
        url     = me.callParent(arguments);
    if(!Ext.isEmpty(someData)){
        url = Ext.urlAppend(url, "data="+someData);
    }
    return url;
}

我希望它有所帮助。

编辑 自定义代理的示例代码,我过去使用它来将一些令牌附加到每个请求

Ext.define('myapp.proxy.CustomJsonpProxy', {
  extend: 'Ext.data.proxy.JsonP',
  alias: 'proxy.customjsonpproxy',
  buildUrl: function(request) {
    var me      = this,
    url     = me.callParent(arguments);
    if(!Ext.isEmpty(loggedInUserToken)){
      url = Ext.urlAppend(url, "token="+loggedInUserToken);
    }
    return url;
  }
});
于 2013-01-25T05:22:14.450 回答
0

下面的代码对我有用....将参数设置为 url

myStore.getProxy().getApi().read = myStore.getProxy().getApi().read + param;
于 2014-09-16T01:54:28.967 回答