gpt4 book ai didi

javascript - 在 ember.js 中从 Controller 加载数据

转载 作者:行者123 更新时间:2023-11-30 17:53:03 28 4
gpt4 key购买 nike

我想实现一个显示最新帖子的系统。为此,我不想使用用户的索引操作,因为这已经用于另一个发布功能,而是一个“最新”操作。它通过 {{ render "postNewest"}} 调用显示在索引路由上。出于抽象原因,我更愿意将数据加载到 PostNewestController 或 PostNewestView 而不是路由中。我尝试了两种想法来实现这一点,但到目前为止都没有奏效:

  • 创建自定义适配器并添加 findNewest() 方法:findNewest() 方法在尝试调用 init 方法时遗憾地找不到 Controller 。

  • 直接将请求写入init方法,然后用store.loadMany(payload)更新:数据为请求成功。但是,我不知道如何从模板访问数据并设置 Controller 的内容。

有什么办法吗?

编辑:

为了更好地理解问题,这里是源代码:

PostModel.js

App.Post.reopenClass({
stream: function(items) {
var result = Ember.ArrayProxy.create({ content: [] });
var items = [];
$.getJSON("/api/v1/post/stream?auth_token=" + App.Auth.get("authToken"), function(payload) {
result.set('content', payload.posts);
});
return result;
}
});

PostStreamController.js

App.PostStreamController = Ember.ArrayController.extend({
init: function() {
this.set("content", App.Post.stream());
},
});

index.hbs

{{# if App.Auth.signedIn}}
{{ render "dashboard" }}
{{else}}
{{ render "GuestHeader" }}
{{/if}}

{{ render "postStream" }}

postStream.hbs

{{#each post in model}}
<li>{{#linkTo 'post.show' post data-toggle="tooltip"}}{{post.name}}{{/linkTo}}</li>
{{else}}
Nothing's there!
{{/each}}

PostShowRoute.js

App.PostShowRoute = Ember.Route.extend({
model: function(params) {
return App.Post.find(params.post_id);
},
setupController: function(controller, model) {
controller.set('content', model);
},
});

最佳答案

我也有这个问题。只需在您的 Controller 中添加 init,然后定义您想要到达那里的模型。

在你的 Controller 中

App.PostRecentController = Ember.ArrayController.extend({
init: function() {
return this.set('content', App.Post.find({
recent: true
}));
}
});

在你的模板中

{{#each post in content}}
{{post.body}}
{{/each}}

我建议您检查 EMBER EXTENSION,它会让您对命名有一个很好的了解,并查看是否缺少所有内容。

关于javascript - 在 ember.js 中从 Controller 加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18583651/

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