2

REST プロキシを使用してモデルを定義しました。これらの操作にはプライマリ ID が必要なため、読み取り (GET) と更新 (PUT) では正常に機能します。作成操作 (POST) を実行すると、プロキシは空のプライマリ ID を含むすべてのフィールドをサーバーに送信し、サーバーでエラーが発生します。サーバーは、作成操作にプライマリ ID が含まれていないことを想定しています。空のプライマリ ID 値を送信しないように extjs に指示するにはどうすればよいですか? すなわち。"{ 'model_id':'',...}"?

Ext.define('model', {
    extend : 'Ext.data.Model',
    idProperty : 'model_id',
    fields : ['model_id', 'first', 'last'],
    proxy : {
         type : 'rest'
    }
});

var mymodel = Ext.create('model',{last:'digler'});
mymodel.save() //posts "{ 'model_id':'', 'last':'digler'}"?

作成時にプライマリ ID フィールドをまったく含めないようにしたい。

4

2 に答える 2

1

これは、リクエストの構造を変更する方法が間違っていると思います。REST を使用する場合、作成、更新要求を操作する責任は完全にサーバー側にあります。

作成リクエストの開始時にパラメータを変更したい場合は、「beforerequest」イベントで変更できます。

Ext.Ajax.on("beforerequest", function( conn, options, eOpts){
  if (options.action=='create')
  {
    var newData = 
           {'name': options.jsonData.name, 'email': options.jsonData.email }; 
    options.jsonData = newData;
  }
});

たとえば、ハード コードされたデータ フィールドを再定義しますが、もちろん、コードで名前を書かなくても、ループ内のすべてのフィールドを実行することができます。

于 2012-04-10T11:03:06.830 に答える
1

さて、あなたはかなり不機嫌なサーバーを持っていますよね?

nullに設定できますが、

fields:[
{
name:'model_id',
type:'int'
useNull:true
}
]

ただし、model_id が文字列の場合はそのままです''

フィールドにも設定できますがpersist = false、更新時に保存されません

基本的に、IDが空の場合は無視するようにサーバー管理者に伝えてください

于 2012-04-10T16:43:16.437 に答える