为什么我的协会没有绑定?

时间:2013-11-09 09:39:43

标签: ember.js coffeescript ember-data

Ember:1.1.2

Ember数据:1.0.0-beta.3

把手:1.0.0

嗨,伙计们,

使用EmberData 1.0.0-beta.3升级我的应用程序后,我正在努力以我想要的方式遍历我的数据。

在我的应用程序中,您正在创建工作,您必须选择一个服务领域。

MyApp.ServiceField = DS.Model.extend
  name: DS.attr('string')
  description: DS.attr('string')
  services: DS.hasMany('service')

此外,您在该字段中选择一项服务。

MyApp.Service = DS.Model.extend
  name: DS.attr('string')
  description: DS.attr('string')
  service_field: DS.belongsTo('serviceField')

现在,当用户访问新路径时,将从服务器获取这些服务。

MyApp.Router.map ()->
  @route 'home.index', { path: '/' }
  @resource 'jobs', ->
    @route 'new'


MyApp.JobsNewRoute = Ember.Route.extend
  setupController: (controller) ->
    controller.set 'model', @store.createRecord('job')
    controller.set 'serviceFields',  @store.find('service_field')

现在服务器返回以下JSON

{"services":[
  {"id":1,"name":"NLP Coaching","description":"NLP coaching er noget med NLP"}, 
  {"id":2,"name":"Familie rådgiver","description":"Har i problemer i familien? Få dem løst med en Familie rådgiver"}],
 "service_fields": [
   {"id":1,"name":"Coaching","description":"Her står en masse godt om coaching faget","service_ids":[1,2]}]}

这似乎工作正常,因为我在检查员中可以看到实际创建模型

Data models

现在我想在我的模板中遍历这个,我按照以下方式执行此操作

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

  {{#each serviceFields }}
    <a class="ui label blue">{{name}}</a>
    <br><br>
    {{#each services}}
      <a class="ui label blue">{{name}}</a>
    {{/each}}
  {{/each}}
</div>

这导致

result

如您所见,我只看到服务字段,但无法弄清楚如何遍历相关服务,请帮帮我。

1 个答案:

答案 0 :(得分:1)

ember-data期望json中的其他键为hasMany关联:“services”而不是“service_ids”。

你的json:

{"id":1,"name":"Coaching","description":"description","service_ids":[1,2]}]}

预期:

{"id":1,"name":"Coaching","description":"description","services":[1,2]}]}

http://emberjs.jsbin.com/eWesIQuV/1

http://emberjs.jsbin.com/eWesIQuV/1/edit示例