Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ember.js中的控制器加载数据_Javascript_Json_Ember.js_Ember Data_Loading - Fatal编程技术网

Javascript 从ember.js中的控制器加载数据

Javascript 从ember.js中的控制器加载数据,javascript,json,ember.js,ember-data,loading,Javascript,Json,Ember.js,Ember Data,Loading,我想实现一个向我展示最新帖子的系统。为此,我不想使用来自用户的索引操作,因为这已经用于另一个post函数,而是一个“最新”操作。它通过{render“postnestest”}调用显示在索引路由上。出于抽象原因,我更愿意在PostNewestController或PostNewestView中加载数据,而不是在路由中加载数据。 我尝试了两个想法来实现这一点,但迄今为止都没有成功: 创建自定义适配器并添加findNewest()方法:尝试调用控制器的init方法时,遗憾地没有找到findNewe

我想实现一个向我展示最新帖子的系统。为此,我不想使用来自用户的索引操作,因为这已经用于另一个post函数,而是一个“最新”操作。它通过
{render“postnestest”}
调用显示在索引路由上。出于抽象原因,我更愿意在PostNewestController或PostNewestView中加载数据,而不是在路由中加载数据。 我尝试了两个想法来实现这一点,但迄今为止都没有成功:

  • 创建自定义适配器并添加
    findNewest()
    方法:尝试调用控制器的init方法时,遗憾地没有找到
    findNewest()
    方法

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

有什么办法吗

编辑:

以下是更好地理解问题的源代码:

PostModel.js

PostStreamController.js

index.hbs

postStream.hbs


我也有这个问题。只需在控制器中添加
init
,并定义您想要到达的模型

在控制器中

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

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

我建议您检查余烬扩展,它将为您提供一个很好的命名方法,并查看是否缺少所有内容。

我解决了问题。Post模型与另一个模型具有belongsTo关系。此关系不是由Ember加载的,因此在stream()方法中,我必须手动加载此关系。然后一切按预期进行。

首先感谢您的回答。我设法解决了这个问题,就像在那里介绍的那样。我现在面临的问题是,当点击一个帖子时,模型不起作用。我认为问题在于我返回的是一个数组而不是一个模型。当你点击帖子时,你想做什么?只需按照每个URL手动加载PostShowRoute时显示它即可。我使用
{{#linkTo“post.show”post}
。URL是正确生成的,但点击页面后仍然是空白的。如果是“空白”,则意味着它是空的,那么模板是空的,或者你在工作,或者你在错误的模板上工作。这很奇怪,因为当在浏览器中键入相同的URL并击中返回(或者简单地刷新空白页)。内容已正确加载和显示。post.show模板不是空的。。。
{{# if App.Auth.signedIn}}
    {{ render "dashboard" }}
{{else}}
    {{ render "GuestHeader" }}
{{/if}}

{{ render "postStream" }}
{{#each post in model}}
    <li>{{#linkTo 'post.show' post data-toggle="tooltip"}}{{post.name}}{{/linkTo}}</li>
{{else}}
    Nothing's there!
{{/each}}
App.PostShowRoute = Ember.Route.extend({
    model: function(params) {
        return App.Post.find(params.post_id);
    },
    setupController: function(controller, model) {
        controller.set('content', model);
    },
});
App.PostRecentController = Ember.ArrayController.extend({
  init: function() {
    return this.set('content', App.Post.find({
      recent: true
    }));
  }
});
{{#each post in content}}
    {{post.body}}
{{/each}}