gpt4 book ai didi

javascript - 在主干中获取单个模型,为什么这不起作用?

转载 作者:行者123 更新时间:2023-12-03 11:57:11 24 4
gpt4 key购买 nike

m 是 Backbone.Model 的子类。我希望 m.url() 返回 '/api/media/sources/1' 但我得到:

> m.id
1
> m.collection.url
"/api/media/sources"
> m.urlRoot
undefined
> m.url()
"/api/media/sources"

发生什么事了?

最佳答案

当您希望将 id 附加到 URL 时,您应该设置 urlRoot,而不是 url

看看default implementation for Backbone.Model.prototype.url这将是有道理的:

url: function() {
var base =
_.result(this, 'urlRoot') ||
_.result(this.collection, 'url') ||
urlError();
if (this.isNew()) return base;
return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
},
<小时/>

后来的评论显示(在发布此答案之后)问题与属性的设置方式有关。

一般来说,您应该始终使用 model.set("id", idValue) 来更改所有属性,甚至尤其是 ID 属性。 (如果您已将 idAttribute 设置为模型原型(prototype)上的其他内容,请使用该名称作为第一个参数,而不是 “id”。)

更一般地说,直接访问 model.attributes 不是一个好主意 - 使用 model.set()model.get() > 相反。 model.id 属性很方便,您基本上应该将其视为只读属性; Backbone 将在涉及 id 属性的每个 set() 调用中对其进行适当修改。 – 白金 Azure 18 小时前

关于javascript - 在主干中获取单个模型,为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557779/

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