学习主干我正在创建一个类似 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)
我的模型不应该也具有服务器端属性吗?这是处理这种事情的正确方法吗?如果不是,我怎样才能有两种不同的方法来显示集合视图?
谢谢!