gpt4 book ai didi

ember.js - 获取 Ember DS.Model 类的服务器 URL

转载 作者:行者123 更新时间:2023-12-04 12:41:28 25 4
gpt4 key购买 nike

在将 Ember Data 用于我的模型时,在某些情况下,我需要解决数据限制并访问服务器上的其他准静态 URL。

例如,我有一个 Feed记录数据流的对象。为了访问模型,我有一个 RESTful 端点:

/feeds/:feed_id

为了开始和停止记录提要,我需要发送 PATCH到一个网址,如:
/feeds/:feed_id?update_action=start

随后我可以重新加载我的模型并查看其中反射(reflect)的更改。

在这种情况下,我需要访问 $.ajax并且 URL 与 Ember 将使用的 URL 相同。但是,我不知道如何从 Ember 中获取这些信息。

到目前为止,我能做的最好的是:
DS.Model.reopen

rootForModel: Ember.computed( ->
@.store.adapterForType(@).serializer.rootForType(@.constructor)
)

pluralRootForModel: Ember.computed( ->
@.store.adapterForType(@).serializer.pluralize(@get("rootForModel"))
)

这样对于 App.FeedItem 的实例我可以:
this.get("rootForModel") # feed_item
this.get("pluralRootForModel") # feed_items

我猜这会与适配器等中的任何设置保持同步。

随后,我可以这样称呼:
$.ajax
url: @get("pluralRootForModel") + "/" + @get("id")
data:
update_action: "start"
type: "PATCH"

这完全是在左场吗?有没有更直接的方式来组成这些 URL?

另一个(相关问题)是获取给定模型的下划线名称。
App.MyModelController  => my_model_controller

我做过类似的事情:

Ember.Object.reopenClass
###*
* The underscored name for this.
* i.e. App.MyClass -> my_class
* From an instance, use this.constructor.underscored_class_name()
* @return {String} This classname, underscored.
###
underscored_class_name: ->
_.underscored("#{@}".replace(/^.*?\./g, ""))

这是疯了吗?有没有更好的方法?

最佳答案

Check out buildURL in DS.RESTAdapter .

如果您想在服务器路径和键中使用下划线,请查看 DS.ActiveModelAdapter (及其默认序列化程序, DS.ActiveModelSerializer )。这个适配器有自己的 buildURL 实现.

关于ember.js - 获取 Ember DS.Model 类的服务器 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972112/

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