1

让我先描述一下我的用例。

作为用户,您应该能够创建工作,在创建此工作时,您需要指定工作领域。这些字段应该从我的 REST API 动态加载。作为 EmberJS 的新手,我现在真的不知道应该如何加载这些字段,因为我正在使用 JobNewController 和路由。

我应该以某种方式将它们加载到我的路线中吗?我一直在尝试这样的事情,但我无法让它工作,我也不太确定我在做什么。

MyApp.JobsRoute = Ember.Route.extend
  setupController: (controller) ->
    controller.set 'serviceFields', MyApp.ServiceField.find()

使用此模板

<p>Creating a new job</p>
<div class="ui input">

  Select a service field
  {{#each serviceFields }}
    {{name}}   sdf
  {{/each}}

</div>

我也尝试在控制器中这样做。

MyApp.JobsNewController = Ember.ObjectController.extend serviceFields: MyApp.ServiceField.find()

但这会产生和错误

Assertion failed: Your application does not have a 'Store' property defined. Attempts to call 'find' on model classes will fail. Please provide one as with 'YourAppName.Store = DS.Store.extend()' 

我猜控制器代码是在 Store 初始化之前运行的。

我该如何处理?

4

1 回答 1

0

获取模型的正确方法是使用商店并找到该模型类型。(请原谅我的咖啡脚本,我使用转换器为我做这件事)

MyApp.JobsRoute = Ember.Route.extend(setupController: (controller, model) ->

  # return does nothing here
  # this._super(controller,model); would do the default
  controller.set "serviceFields", []
  promise = @get("store").find("serviceField")
  promise.then (records) ->
    controller.set "serviceFields", records

)

这是更常见的方法,顺便说一句

MyApp.JobsRoute = Ember.Route.extend(model: ->
  @get("store").find "serviceField"
)
于 2013-10-31T16:16:13.610 回答