首先让我描述一下我的用例。
作为用户,您应该能够创建作业,而在创建此作业时,您需要指定一个工作领域。应该从我的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之前运行的。
我该如何处理?
答案 0 :(得分:0)
获取模型的正确方法是使用商店并找到该模型类型。 (原谅我的coffeescript,我用转换器为我做了)
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
)
这是更常见的方法,btw
MyApp.JobsRoute = Ember.Route.extend(model: ->
@get("store").find "serviceField"
)