2013-08-23 3 views
0

У меня проблема с большим проектом в ember, Я хочу получить информацию от модели, когда я в шаблоне, который не связан с контроллером для этой модели ,получить модель от другого контроллера в emberjs in view

Я получил эти шаблоны:

<script type="text/x-handlebars" data-template-name="community"> 
    {{model.name}} 
    {{outlet}} 
</script> 

//users is a subroute from community 
<script type="text/x-handlebars" data-template-name="communityUsers"> 
    //assume i want to display something from a community here like: 
    {{community.id}} 
    {{#each user in model}} 
    <li>{{user.name}}</li> 
    {{/each}} 
</script> 

в маршрутах я извлекающие соответствующие модели так и для сообщества я получил 1 сообщество и в communityUsers у меня есть массив с пользователями

Кто-нибудь знает лучшее решение для этого?

+0

Я думаю, вам нужно объяснить проблему более определенным образом. Какую информацию вы хотите получить от модели? Не спрашивайте «лучшее решение», но задавайте конкретно решение, которое решает вашу проблему. – Mark

ответ

1

меня проблема с большим проектом в уголек, я хочу получить информацию от модели, когда я в шаблоне, который не связан с контроллером для этой модели.

Предполагая, что вы получите ваши общины, как это:

App.CommunityRoute = Ember.Route.extend({ 
    model: function() { 
    return App.Community.find(); 
    } 
}); 

Далее предполагается, что вы хотите иметь доступ с контроллера, который не связан с вашим CommunityController (которые попадают-х это набор контента после возвращения модели крюков) вы можете использовать needs API и определить Dependance к нему

App.CommunityUsersController = Ember.Objectontroller.extend({ 
    // here dependence definition 
    needs: ['community'], 
    // create an observer that returns the community you want 
    // I've chosen just the first one 
    choosenCommunity: function() { 
    return this.get('controllers.community').objectAt(0); 
    }.observes('controllers.community') 
}); 

Так что теперь в вашем communityUsers шаблоне вы можете получить доступ к этим р roperties

<script type="text/x-handlebars" data-template-name="communityUsers"> 
    //assume i want to display something from a community here like: 
    {{choosenCommunity.id}} 
    {{#each user in choosenCommunity.users}} 
    <li>{{user.name}}</li> 
    {{/each}} 
</script> 

И самое лучшее из всего этого, все будет оставаться в курсе, поскольку оно связано.

Надеюсь, это поможет.

+0

это решает мою проблему, спасибо! –

1

Итак, из того, что я понял, вы пытаетесь получить доступ к модели communityController внутри шаблона его дочернего шаблона communityUsers. Для этого вы, чтобы определить ваш communityUsersController нуждаться в communityController по

needs: ['community'] 

, а затем в шаблоне

{{#each user in controllers.community.model}} 
<li>{{user.name}}</li> 
{{/each}} 
+0

Это то, что мне нужно, спасибо вам большое! –

Смежные вопросы