0

追加パラメータをジャージサーバーに渡す必要があります。しかし、 .. get / {param1} / {param2} / {param3}のようなURLを送信するにはどうすればよいですか?

これが私の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'));




            }
        }
        );



                    }
                }


        ],


   }

});

Model.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のようなURLしか渡せません。解決策を教えてください。ありがとう

4

2 に答える 2

2

私の頭に浮かぶ2つのことは、最初にモデル定義内にプロキシを記述せず、代わりに、構成データを確認してそれに基づいて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
    });

2番目の方法は、データをチェックしてURLに追加するように拡張Ext.data.proxy.Restおよび実装する独自のプロキシを作成することです。buildUrl例えば

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 に答える