バックボーンを学ぶためにImはTwitterのようなアプリを作成しています。つまり、TwitterはN秒ごとにサーバーにGETリクエストを送信して、新しいツイートをチェックします。新しいツイートがある場合は、非表示のli要素を作成し、「N個の新しいツイート」のボタンを表示します。クリックすると、非表示のli要素が表示され、新しいツイートが表示されます。ただし、新しいツイートを追加した場合の動作は異なります。ツイートは表示されます。ボタンをクリックして表示する必要はありません。
隠されたツイートのために、私はすでに最初の部分を作りました。新しいツイートを投稿してそれを直接表示する部分については、新しいモデルを作成し、collection.create()を呼び出して、次のような適切なイベントをトリガーすることで簡単にできると思いました。
var newTweet = new Tweet();
newTweet.set( /* set the attributes here. Some attributes are missing, because they are calculated server side */ );
var created_tweet = this.collection.create( newTweet, { silent: true, wait: true } ); // I choose silent=true because the add event on my collection is in charge of adding the new hidden tweets when there are new ones on the server
this.collection.trigger("posted_new_tweet", created_tweet);
次に、私のコレクションはイベント「posted_new_tweet」にサブスクライブされるため、ユーザーが新しいツイートを投稿するたびに、私のコレクションの特定のメソッドが呼び出されます。このアプローチは、トリガーで渡された変数created_commentが原因でエラーが発生するまでは正常に機能していました。これは、「完全」ではありません。つまり、モデルには、未定義の「id」や*「created_on」*などの属性がいくつかあります。これらの属性はサーバー側で計算されますが、wait = trueを渡すと、待機してサーバーからの応答でモデルが更新されると思いました(サーバーに対してPOSTリクエストが行われると、新しく作成されたモデルがjson)
私のモデルにはサーバー側の属性も含まれるべきではありませんか?それはそのようなことのための正しいアプローチですか?そうでない場合、コレクションビューを表示する2つの異なる方法をどのように設定できますか?
ありがとうございました!