2016-12-09 3 views
2

내 응용 프로그램에는 abc.com이라는 홈페이지와 사용자 프로필에 로그인 된 abc.com/user123 (동적 세그먼트 있음)이라는 링크가 있습니다.중복 된 경로`index` 오류

이전, 나는 수행하여이 달성 :

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`.

두 경로 중 하나를 생략해도 원하는 결과를 얻을 수 없습니다.

abc.comabc.com/user123 같은 링크를 달성하기 위해 새로운 방법은 무엇이 Ember Twiddle

//user123를 방문하십시오?

+0

당신이 [토론]에 관심이있을 것 (https://github.com/emberjs/ember.js/issues/14585) – kumkanillam

+0

아하 ! 고맙습니다 @ kumkanillam –

답변

0

emberjs bug report에서는 이러한 종류의 라우트 구성을 가지지 않는 것으로 설명합니다. 그럼에도 불구하고 동일한 기능을 원할 경우 시도해보십시오. 이것이 당신에게 효과가 있는지 알려주십시오.

Twiddle Link

나는 profile-index 경로,

  • 그것의 경로가 확장 자사의 컨트롤러는 확장
  • index 경로를 생성 index 컨트롤러
  • 그 템플릿을 사용하면 모든 파일의 특정을 사용합니다 일반적으로 index.hbs
    입니다 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.jsindex.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'}); 
    });