【问题标题】:EmberJS: Defining Controller Breaks Route ModalEmberJS:定义控制器中断路由模式
【发布时间】:2014-01-16 23:51:17
【问题描述】:

我对 Ember 还很陌生,我开始编写更复杂的应用程序。我一直在努力弄清楚为什么为索引定义控制器会破坏索引路由的模型群体。

我已经尝试过“setupcontroller”功能,但还是不行。

这是路线代码:

App.IndexRoute = Ember.Route.extend({
    model: function () {
        return Ember.RSVP.hash({ //return promises for both models here
            featuredJobs: $.getJSON('http://api.*********/featured/jobs', {'token': guestToken}),
            featuredEmployers: $.getJSON('http://api.********/featured/employers', {'token': guestToken})
        })
    }
});

当我添加 App.IndexController = Ember.Controller.extend({... 时,它会破坏模型的 {{#each}} 助手。 (不是应用程序)。我可以在 Ember 检查器中看到分配给路线的模型。这是模板:

<div class="panel-body">
    <div class="list-group ft-jobs">
        {{#each featuredJobs}}
            {{#linkTo 'job' _id class="list-group-item"}}
            <h4 class="list-group-item-heading">{{title}}</h4>
            <p class="list-group-item-text">{{description}}</p>
        {{/linkTo}}

        {{else}}
        <p class="text-center">Sorry, no featured jobs are available.</p>
        {{/each}} //END OF SNIPPET

【问题讨论】:

  • 我可能错了,但我认为 IndexController 需要是 Ember.ArrayController 而不仅仅是 Ember.Controller,因为它需要一个 JSON 对象数组。
  • 有道理...谢谢,我明天试试。
  • 如果可以的话,报告它的进展情况:) 我对 Ember 也很陌生,所以如果在添加控制器之前其他一切正常,这只是我的第一直觉。
  • @rogMaHall 好吧,我的节点 api 反馈了一个 json 对象,所以 kingpin2k 的答案是正确的,但你的想法是正确的。现在可以使用了。
  • 太棒了!是的,这是有道理的,当我看到他的回答时,我立即投票给他。我是根据单个控制器处理的多个 json 对象来考虑它的:P

标签: javascript ember.js


【解决方案1】:

您的控制器需要扩展 ObjectController,因为它由一个对象支持。

http://emberjs.jsbin.com/OxIDiVU/134/edit

【讨论】:

  • 谢谢@kingpin2k,您的回答解决了这个问题。另外,我不必在路由中使用 setupController 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多