2016-12-09 5 views
2

Мое приложение имеет ссылки как abc.com, который является домашней страницей и abc.com/user123 (имеет динамический сегмент), который является зарегистрированным пользователем на определенной странице профиля.Дубликат маршрута с именем `index` error

Раньше я достиг этого, выполнив:

this.route('index',{path:'/'}, function(){}); 
this.route('index', {path:'/:u_name'} , function() {}); 

Теперь, после обновления до 2.10, я неспособного создать необходимые ссылки в моем router.js, используя выше способом. Это приводит к следующей ошибке в консоли:

ember.debug.js:55283 Uncaught Error: You may not add a duplicate route named `index.loading`.

Опуская любой из этих двух путей не позволяет мне достичь желаемого результата.

Попробуйте посетить / и /user123 на этом Ember Twiddle

Что новый путь для достижения ссылки как abc.com и abc.com/user123?

+0

Вам будет интересно в этом [обсуждение] (https://github.com/emberjs/ember.js/issues/14585) – kumkanillam

+0

Aha ! Спасибо @kumkanillam –

ответ

0

В этом emberjs bug report обсуждается отсутствие такой конфигурации маршрута. Несмотря на это, если вы хотите иметь такую ​​же функцию, попробуйте мою попытку. сообщите мне, если это работает на вас.

Twiddle Link

Я создал profile-index маршрут,

  • Его маршрут проходит index маршрут
  • Ее контроллер расширяет index контроллер
  • Его шаблон index.hbs
    Обычно вы будете использовать все файлы, определенные до index маршрут до profile-index

router.js

import Ember from 'ember'; 
import config from './config/environment'; 

const Router = Ember.Router.extend({ 
    location: 'none', 
    rootURL: config.rootURL 
}); 

Router.map(function() { 
    // BOTH '/' and '/user123' will work now 
    this.route('index',{path: '/'}); 
    this.route('profile-index',{path: '/:u_name'}); 
}); 

export default Router; 

маршруты/index.js

import Ember from 'ember'; 
export default Ember.Route.extend({ 
    eUserName: undefined, 
    model(params){ 
    this.set('eUsername', params.u_name); 
    return [1,2]; 
    }, 
    setupController(controller,model){ 
    this._super(...arguments); 
    controller.set('eUsername',this.get('eUsername')); 
    } 
}); 

маршруты/Профиль-index.js это сделает index.hb ю не profile-index.hbs

import Ember from 'ember'; 
import IndexRoute from './index'; 
export default IndexRoute.extend({ 
    templateName:'index', 
}); 

Контроллеры/index.js

import Ember from 'ember'; 
export default Ember.Controller.extend({ 
    isProfilePageShown: Ember.computed('eUsername', function(){   
    return this.get('eUsername') ? true : false; 
    }),  
    isHomePageShown: Ember.computed('isProfilePageShown', function(){ 
    return this.get('isProfilePageShown') ? false : true; 
    }) 
}); 

Контроллеры/Профиль-index.js

import Ember from 'ember'; 
import IndexController from './index'; 
export default IndexController.extend({ 
}); 

шаблоны/индекса.hbs

import Ember from 'ember'; 
import IndexController from './index'; 
export default IndexController.extend({ 
}); 
1

Ankush.

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

Для записи, я думаю, что ответ заключается в том, чтобы оставить «индекс». Он пытается быть полезным, имея неявный маршрут, но он часто просто путает вещи.

this.route('flowers', function() { 
    this.route('flower-list', { path: '/' }); 
    this.route('flower-detail', { path: '/:id'}); 
    }); 

или в несколько более сложной вложенности

this.route('flowers', function() { 
    this.route('loading'); 
    this.route('flower-list', { path: '/' }, function() { 
     this.route('quick-view', { path: '/:id'}); 
    }); 
    this.route('flower-detail', { path: '/:id'}); 
    }); 

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

  • Нет связанных вопросов^_^