Подкаталоги внутри контроллера ember не работают

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

https://github.com/ember-cli/ember-cli/issues/1219

Однако это не работает для меня.

Вот моя ветвь кода, как (каталог cm содержит дочерние представления каталога):

 /controllers/cm/views/item.js
 /routes/cm/views/item.js
 /templates/cm/views/item.js

когда я пытаюсь заполнить модель в маршруте, используя код ниже, я вижу данные, но когда я помещаю тот же код в контроллер, он никогда не выполняется.

   model: function(){

            return this.store.find('item',{id: "1"});

          }

запись в router.js выглядит следующим образом:

   this.resource('cm', {path: '/cm/:id'} , function() {

                this.route('views');
                this.route('views.items', {path: '/views/items'});
       });

Очевидно, что ember не может правильно определить контроллер. Не уверен, как это исправить...

2 ответа

Wat?! Подкаталоги работают просто отлично. Во-первых, я не уверен, что это лучшая идея для использования views или же items в качестве названий маршрутов, так как они оба очень общие, а также используются в некоторых угасающих внутренностях и могут запутать вещи. Объявление модели под названием View вполне может даже сломать вещи в вашем приложении.

Контроллер / маршрут / шаблон структуры для вашего router.js будет следующим:

<controllers|routes|templates>/cm.js
<controllers|routes|templates>/cm/index.js
<controllers|routes|templates>/cm/views.js

И я не уверен, как будет выглядеть views.items, потому что это, вероятно, лучше подходит для того, чтобы вместо этого делать представления ресурсом или использовать тире в имени, и в этом случае объявление маршрута будет this.route('views-items', {path: '/views/items'});

В целом, я думаю, что ваше определение маршрутизатора должно выглядеть так:

this.resource('cms', function() {
  this.resource('cm', {path: '/:cm_id'}, function() {
    this.route('views');
    this.route('views-items', { path: '/views/items' });
  });
});

Это не значит, что мы должны помочь - но я думаю, вам нужно потратить немного больше времени на документацию по маршрутизации Ember, чтобы понять соглашения, которые Ember ожидает для определенных определений маршрутизатора. Кроме того, инструмент ember inspector очень полезен при устранении неполадок маршрутизатора: https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi

Что его потому что model зацепить route работает иначе, чем в контроллере.

в route это метод, который может возвращать обещание, маршрут будет ждать разрешения обещания, прежде чем устанавливать контроллер.

в контроллере, это просто атрибут, который не будет выполняться, пока вы getэто, и даже тогда, все, что вы получите свое обещание.

Другие вопросы по тегам