gpt4 book ai didi

javascript - 从服务器获取单个 Backbone 模型

转载 作者:可可西里 更新时间:2023-11-01 01:16:28 25 4
gpt4 key购买 nike

假设我有一个路线设置:

'photos/:id' : 'showPhoto'

有人与 friend 分享了网址:www.mysite.com/photos/12345

当他们的 friend 点击共享链接时,showPhoto 被回调,id 为 12345。我无法弄清楚如何从服务器获取模型,因为即使在设置其 id 属性并调用 fetch() 时,主干认为模型 isNew 因此 ajax 请求 url 只是 /photos 而不是 /photos/12345:

showPhoto: (id) ->
photo = new models.Photo _id:id
photo.fetch #does a GET to /photos, I would have expected it to request /photos/12345
success: () ->
render photo view etc...

Photo = Backbone.Model.extend
idAttribute: '_id'
urlRoot: '/photos'

模型 Photo 通常是集合的一部分,但在这种情况下,有人直接访问该站点并且只希望看到一张照片的数据,因此集合不会在这种状态下实例化应用程序。

加载整个照片集合然后使用 collection.getById(id) 的解决方案吗?当我只想加载一个模型的属性时,这似乎效率太低了。

最佳答案

如果您没有模型作为集合的一部分,您必须手动告诉模型完整的 url。它不会自动将 id 附加到您指定的 urlRoot。您可以指定一个函数作为 urlRoot 来执行此操作:

Photo = Backbone.Model.extend({
urlRoot: function(){
if (this.isNew()){
return "/photos";
} else {
return "/photos/" + this.id;
}
}
});

Backbone 使用模型的 id 来确定它是否是新的,所以一旦你设置了它,这段代码应该可以正常工作。如果不是,您始终可以在 if 语句中检查 id 而不是检查 isNew。

关于javascript - 从服务器获取单个 Backbone 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com