gpt4 book ai didi

javascript - Ember.js 搜索模型动词

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

我发现的教程和指南表明 Ember.js 模型非常以数据为中心,因为浏览器中的数据会持久保存到服务器和/或模型中填充了来自服务器的数据。

更以动词为中心的东西怎么样?例如,我的情况是,到目前为止,我有一个“搜索”模型,其中搜索有一个查询、一个状态(“beforesearch”、“duringsearch”等),并且希望有一些结果。我希望搜索然后“runQuery”,它向服务器发出 ajax 请求,服务器返回并用结果填充模型,并将其状态更改为“aftersearch”。

在模型上处理此类动词的最佳方式是什么? “runQuery”应该通过 ember-data 传递,还是使用 $.ajax 或类似的方法手动触发?我是否以错误的方式考虑模型,而这实际上应该通过 Controller 进行?

编辑:在阅读了一些关于 REST 的内容之后,我想我想要的是 POST 到“ Controller ”资源。所以,例如:

POST:/searches(创建搜索)

POST:/searches/1/run(执行搜索 1 的“运行” Controller

Ember.js/ember-data 是否有像这样调用 Controller 资源的推荐方式?

最佳答案

Ember-data 非常注重使用包含各种信息字段和关系并由唯一 ID 定义的模型对象。我的 API 有一半像 ember-data 所期望的那样,一半像你描述的那样,它更多地是关于数据处理或执行计算而不是创建/检索/更新/删除具有 id 的数据对象。将这些计算视为相同并为其分配一个 id 并将其保存在数据库中是没有意义的。

在我的例子中,因为我同时拥有 ember-data 样式数据对象和计算功能,所以我混合使用了 ember-data 和自定义 ajax 请求。我存储了由 ember-data 检索的关系数据,但我扩充了模型以包括对计算部分的访问。

例如:

App.Event = DS.Model.extend({
name: DS.attr('string'),
items: DS.hasMany('App.Item'),
...etc...

searchData: null,
searchInEvent: function(data) {
var _this = this;
return $.ajax({
url: "/api/events/" + this.get('id') + "/search/",
dataType: 'json',
type: 'POST',
data: data
}).then(function(result){
_this.set('searchData', result);
});
}
});

App.Event 是一个普通的 ember-data 模型,由路由器通过通常的 ember 约定加载,并且由于各种 Controller 需要访问搜索功能,它们可以通过 searchInEventsearchData 添加到模型中。

关于javascript - Ember.js 搜索模型动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585919/

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