2014-02-12 51 views
1

我想在車把模板來訪問「名」下面的JSON的屬性,使用ember.js似乎並不能得到它的工作。如何對象中訪問數組中的模板車把&Ember.js

我擴展模型如下:

App.Post = DS.Model.extend({ 
     taxonomies : DS.attr();  
}); 

我的JSON是這樣的:

{"taxonomies":{ 
    "positions":[ 
    { 
     "name":"F", 
    } 
    ], 
    "nhlteams":[ 
    { 
     "name":"MTL", 
    } 
    ] 
}} 

在模板:

<script type="text/x-handlebars" data-template-name="posts"> 
    <h1>Position Name: {{taxonomies.positions.0.name}}</h1> 
    <h1>Team Name: {{taxonomies.nhlteams.0.name}}</h1> 
</script> 

我也試過:

<script type="text/x-handlebars" data-template-name="posts"> 
    <h1>Position Name: {{taxonomies.positions.name}}</h1> 
    <h1>Team Name: {{taxonomies.nhlteams.name}}</h1> 
</script> 

任何想法我可能是做錯了?

回答

0

您需要創建taxonimiespositions之間的hasMany關係等

App.Post = DS.Model.extend({ 
    taxonomy: DS.belongsTo('taxonomy');  
}); 

App.Taxonomy = DS.Model.extend({ 
    positions : DS.hasMany('position');  
}); 

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

那麼你的JSON將需要這種格式

{ 
    post:{ 
    taxonomy:1 
    }, 
    taxonimies:[ 
    { 
     id:1, 
     positions:[1] 
    } 
    ], 
    positions:[ 
    { 
     id:1, 
     name:"F" 
    } 
    ] 
} 

要了解更多的信息如何燼數據期待json的,看到https://github.com/emberjs/data/blob/master/TRANSITION.md在這種情況下

+0

那麼,你會怎麼然後通過handlebars.js叫什麼名字? –

+0

在這個例子中,假設post是我們當前的上下文,我會做'{{taxonomy.positions.firstObject.name}}' – Kingpin2k