名为`index`错误的重复路由

时间:2016-12-09 12:11:26

标签: javascript ember.js routing url-routing ember-cli

我的应用程序的链接为Site1 Name: MySite1 Type: http Host name: null Port: 80 IP Address: * Binding Information: null Desired URL: www.mysite1.com or something equivalent Site2 Name: MySite2 Type: http Host name: null Port: 81 IP Address: * Binding Information: null Desired URL: www.mysite2.com or something equivalent 这是一个主页,而abc.com(有一个动态细分)是用户登录的特定个人资料页面。

之前,我通过以下方式实现了这一目标:

abc.com/user123

现在,升级到2.10后,我无法使用上述方法在我的router.js中创建所需的链接。它在控制台中引起以下错误:

  

ember.debug.js:55283未捕获错误:您可能无法添加名为`index.loading`的重复路由。

省略两条路径中的任何一条都不允许我达到预期的结果。

尝试访问此Ember Twiddle

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

完成/user123abc.com等链接的方式是什么?

2 个答案:

答案 0 :(得分: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'});
  });

答案 1 :(得分: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'));
  } 
});

routes / profile-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({  
});

<强>模板/ index.hbs

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