2013-10-31 79 views
1

让我先描述我的用例。在emberjs中加载对象的正确方法是什么?

作为一个用户,您应该能够创建一个作业,同时创建这个作业,您需要指定一个工作领域。这些字段应该从我的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()' 

我想前门店是控制器代码跑初始化。

我该如何处理?

+0

您使用的灰烬模型或灰烬数据(或没有)? – Kingpin2k

+0

EmberData,在Rails-烬宝石内 – MartinElvar

回答

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 

) 

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

MyApp.JobsRoute = Ember.Route.extend(model: -> 
    @get("store").find "serviceField" 
) 
相关问题