gpt4 book ai didi

javascript - Ember.js find() 不适用于参数

转载 作者:行者123 更新时间:2023-11-28 08:09:43 24 4
gpt4 key购买 nike

我正在尝试使用 ember 制作一个简单的帖子检索应用程序。只要我不将参数传递给 find() 函数,一切都会正常工作:

这很好用:

return this.store.find('post')

但不是这些:

return this.store.find('post', { title: 'title1' })

return this.store.find('post', {})

无论参数如何,服务器都会返回完全相同的 JSON,但当有参数时,Ember 似乎不会处理它。商店空无一人。

完整代码如下:

App = Ember.Application.create({
LOG_TRANSITIONS: true
});

App.Router.map(function(){
this.resource('myPosts');
});

App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'api/v1/'
});

App.Post = DS.Model.extend({
title : DS.attr( 'string' ),
body : DS.attr( 'string' )
});

App.MyPostsRoute = Ember.Route.extend({
model : function() {
return this.store.find('post', { title: 'title1' })
},

setupController: function (controller, model) {
controller.set('model', model);
}
});

在所有情况下,我都没有收到任何错误,查询处理得很好,并且我在 chrome DevTools 中检查过服务器返回的 JSON 是相同的。

这是返回的 JSON。

{"post": [{"body": "a body", "title": "title1"}]}

Handlebars 模板很简单:

<script type="text/x-handlebars" id="myPosts">
<div class = "postsWrapper">
{{#each}}
<div>{{this}}</div>
<div>title: {{title}}</div>
{{/each}}
</div>
</script>

这是我使用 this.store.find('post', { title: 'title1' }) 得到的输出:

<App.Post:ember382:null>
title:

这是我得到的不带参数的:

<App.Post:ember294:null>
title: title1

感谢您的帮助。

最佳答案

好的,经过进一步交谈,我认为您的问题与 API 有关。

当您调用 this.store.find('post') 时,Ember 应向 api/v1/posts 发出 GET 请求端点,应返回以下 JSON:

注意:这是一个复数 posts 对象,其中包含一个帖子对象数组。

{
"posts": [
{ "body": "body1", "title": "title1" },
{ "body": "body2", "title": "title2" }
]
}

当您调用 this.store.find('post', { title: 'title1' }) 时,Ember 应向 api 发出 GET 请求/v1/posts?title=title1 端点,应返回以下 JSON:

注意:这是一个带有单个 post 对象的单个 post 对象。

{
"post": { "body": "body1", "title": "title1" }
}

从服务器返回的 JSON 格式非常重要,API 需要进行过滤,除非您要求,否则 Ember 不会过滤。

关于javascript - Ember.js find() 不适用于参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403093/

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