Ember.js 具有部分解释路由的Emberjs路由器

Ember.js 具有部分解释路由的Emberjs路由器,ember.js,ember-router,Ember.js,Ember Router,我想创建一个类似Stackoverflow的共享按钮:我想为共享创建一个短链接。现在我的链接可以采用以下3种形式: s/51b9dd49065f905411000000/1 s/51b9dd49065f905411000000/51b9dd49065f905411000020/2 s/51b9dd49065f905411000000/51b9dd49065f905411000020/51b9dd49065f905611000020/3 如何让ember只解释路线直到s/,然后将其余部分作为参数

我想创建一个类似Stackoverflow的共享按钮:我想为共享创建一个短链接。现在我的链接可以采用以下3种形式:

s/51b9dd49065f905411000000/1
s/51b9dd49065f905411000000/51b9dd49065f905411000020/2
s/51b9dd49065f905411000000/51b9dd49065f905411000020/51b9dd49065f905611000020/3

如何让ember只解释路线直到
s/
,然后将其余部分作为参数提供给我,以便我可以处理它并重建正确的路线?

您可以使用星型分段。这是有案可查的

鉴于此应用程序:

App.Router.map(function() {
    this.route('share', { path: 's/*linkPath' })
});

App.ShareRoute = Ember.Route.extend({
  model: function(params) {    
    console.log(params.linkPath);
    return params;
  }
});
当url以
s/
开头并以任何内容结尾时。剩余值将设置在名为
linkPath
的变量中

例如:

URL                          => params.linkPath content    
-------------------------------------------------------------
s/51b9dd49065f905411000000/1 => "51b9dd49065f905411000000/1"
s/hey/ho/lets/go             => "hey/ho/lets/go"
因此,在模型钩子中,可以使用
params.linkPath
获取其余参数

您可以在jsbin中看到这一点。打开控制台,将记录字符串“51b9dd490/51b9dd490/3”