2014-06-13 69 views
1

在构建我的restful api时,我基本上遵循了Ember的RESTAdapter约定。获取相关模型数据ember.js

我有一个模型post和一个模型tags,一个多对多的关系。由于我只会找到与帖子相关的标签,我没有定义相反的帖子。

所以我在后期模型tags: hasMany('tag')中得到了这个,在restful api中它返回了tags: ["1", "2", "3"]等等,就像它假设的那样。

所以现在我想知道如何在posts/1 url上获得这些标签。当我查看商店时,它没有检索到任何标签。我如何访问标签数据及其属性?

App.Tag = DS.Model.extend({ 
    name: attr() 
}); 

App.Post = DS.Model.extend({ 
    active: attr(), 
    name: attr(), 
    organization: attr(), 
    user_id: attr(), 
    submitted_ts: attr(), 
    status: attr(), 
    tags: hasMany('tag') 
}); 

{ 
    "post": { 
    "0": { 
     "id": "1", 
     "active": "A", 
     "name": "This is a test title", 
     "organization": "Stryker", 
     "user_id": "0", 
     "submitted_ts": "1402664380", 
     "status": "finalized" 
    }, 
    "tags": [ 
     "30", 
     "1", 
     "14" 
    ] 
    }, 
    "tags": [ 
    { 
     "id": "30", 
     "type": "asdf", 
     "name": "KNEE", 
     "pivot": { 
     "case_id": "1", 
     "id": "30" 
     } 
    }, 
    { 
     "id": "1", 
     "type": "therapy", 
     "name": "more things", 
     "pivot": { 
     "case_id": "1", 
     "id": "1" 
     } 
    }, 
    { 
     "id": "14", 
     "type": "therapy", 
     "name": "asdfasdf", 
     "pivot": { 
     "case_id": "1", 
     "id": "14" 
     } 
    } 
    ] 
} 

串行器是无关的这一号召

App.SpecialtySerializer = DS.JSONSerializer.extend({ 
    primaryKey: 'specialty_id' 
}); 


App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    namespace: 'api/v1', 
    headers: function() { 
     return { 
      authToken: this.get('auth.authToken') 
     }; 
    }.property("auth.authToken") 
}); 
+0

只需要访问标记也许我很困惑的你试图尝试的是,你试图获取标签异步,还是你想让他们在同一时间下降? – Kingpin2k

+0

与帖子属于同一类型。我返回的json就像 '{post:{...}} .....标签:{...}格式很糟糕,我知道。但基本上这些标签在帖子的json请求中。 – user1952811

+0

你会为上面的帖子和标签显示你的模型定义,也许会抛出一个json的例子,并且你说你正在使用RESTAdapter,这是否仍然适用? – Kingpin2k

回答

0

,当你有这样的标签,你说的标签信息被灌进与该职位的要求。如果这是不正确的,那么你就需要标记的标签,异步

tags: hasMany('tag')

,如果它包括在呼叫后,你做post.get('tags')

+0

我应该在哪里打这个电话? 'post.get( '标签')'?它应该在路线中吗? – user1952811