2015-01-18 2 views
0

Ive получил структуру, подобную тойКак подсчитать элементы родительской модели маршрута, чтобы использовать ее во вложенном маршруте?

App.Router.map(function() { 
    this.route("levels"); 
    this.resource("level", {path: 'levels/:level_id'}, function()  { 
    this.route("play"); 
    }); 
}); 

Теперь мне нужно использовать информацию о количестве элементов (уровень-записи) в пределах вложенной модели «уровня/игры». Мой первый подход должен был вставить в мой плей-контроллер что-то вроде этого:

App.LevelPlayController = Ember.ObjectController.extend({ 

    getLevelCount: function() { 
     var allLevels = this.store.find("level"); 
     var levelCount = allLevels.get("length"); 
     return levelCount; 
    }.property() 
} 

Но это, кажется, не работает. Может быть, из-за асинхронной загрузки?

Может ли кто-нибудь помочь?

+0

Можете ли вы показать код своего маршрута 'play'? В стороне я очень рекомендую Ember CLI для нового приложения Ember. –

+0

Ну, на самом деле у меня его нет :). Я никогда не отменю маршрут для «уровня/игры». Я просто реализую контроллер для «игры». Поэтому при написании чего-то вроде этого: 'this.model.set ('information', myValue);' он записывает значение в родительскую модель («уровень»). Btw: Thx. Я обязательно буду использовать I CLI в дальнейших проектах. Это моя первая попытка с ember.js –

+0

Кажется, что ваш проект довольно новый, вам стоит подумать о переходе на Ember CLI даже для этого. Это новый стандарт для приложений Ember, очень приятно работать с ним и будет лучше поддерживаться, чем глобальные приложения в стиле пространства имен ('App.' и т. П.). –

ответ

1

Поскольку уже загружена модель родительской точки маршрута, вы можете просто получить доступ к нему в детском маршруту:

Ember.Route.extend({ 
    model: function() { 
    return this.modelFor('level'); 
    } 
}); 

Затем в контроллере, вы можете получить доступ к уровню как model собственности.

Доступ к магазину - скорее вещь маршрута, чем вещь контроллера.

+0

ну, это правда, но что, если я хочу получить доступ к специальной модели для маршрута (здесь 'play')? Поэтому, если я уже реализую что-то подобное для дочернего/субтрасса, например 'return this.store.find (" levelplay ");'? В конце концов, я хочу получить доступ к обеим моделям от контроллера-маршрута: маршрутизация собственной модели и родительской модели. –

+1

Вы можете решить это, загрузив несколько моделей на маршруте, [здесь] (https://stackoverflow.com/questions/20521967/emberjs-how-to-load-multiple-models-on-the-same-route) , –

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