3

メソッドを使用してコレクションにモデルを追加していますがcreate、APIは正常に応答しています。モデルは適切に返送されたようconsole.dir( resp );で、私が探していたものを確認してください。ただし、で定義されてrunningorderidいるにアクセスしようとすると、応答はnullになります。これは応答の非同期性と関係があると思いますが、どう対処すればよいかわかりません。ididAttribute

var resp = window.app.RunningOrderCollection.create(
        { runningorderid: null, listitemid: 1, starttime: n} , 
        { wait: true }
);
console.dir( resp );
console.dir( resp.get("strt") );
console.dir( resp.id );

問題のスクリーンスケープ

4

2 に答える 2

2

collection.create、サーバーリクエストに関連するすべてのメソッドは、実際には非同期です。あなたの場合、同期イベントをリッスンして、目的の結果を得ることができます。

http://backbonejs.org/#Collection-createから

モデルを作成すると、サーバー上でモデルが正常に作成されると、コレクションで即時の「追加」イベントと「同期」イベントがトリガーされます。

例えば:

resp.on('sync', function(model) {
  console.dir( resp );
  console.dir( resp.get("strt") );
  console.dir( resp.id );
});
于 2012-07-24T09:54:17.203 に答える
2

コレクションとモデルのサーバー操作の非同期性を回避するには、操作の後に実行するアクションを、それらの操作が終了したときにトリガーされるイベントにバインドします。たとえば、backbone.jsのドキュメントには、コレクションの機能について次のようにcreate記載されています。

モデルを作成すると、サーバー上でモデルが正常に作成されると、コレクションで即時の「追加」イベントと「同期」イベントがトリガーされます。新しいモデルをコレクションに追加する前にサーバーを待機する場合は、{wait:true}を渡します。

つまり、{wait:true}に合格したので、addモデルがサーバー上に作成されてコレクションに追加されると、コレクションはイベントをトリガーします。このロジックでは:

window.app.RunningOrderCollection.on('add', function(resp) {
  console.dir( resp );
  console.dir( resp.get("strt") );
  console.dir( resp.id );
});
var model = window.app.RunningOrderCollection.create(
  { runningorderid: null, listitemid: 1, starttime: n} , 
  { wait: true }
);

詳細については、backbone.jsドキュメントの優れたイベントカタログを確認してください。

お役に立てれば!

于 2012-07-24T09:57:12.750 に答える