动态更改链接到routeName

时间:2015-06-09 08:09:43

标签: ember.js

tl; dr:如何解决这个问题:http://emberjs.jsbin.com/pazece/4/edit

我需要动态更改link-to helperrouteName。这里的动机是在面包屑导航中创建后退按钮。

当我的应用程序从具有一个动态段的路由转换为具有多个动态段的路由时,问题就出现了。这导致多个#if语句,因为#link-to无法接受可变数量的动态细分。 SO example

我可以通过添加多个#if语句来解决这个问题。不好,但从理论上说它有效。问题是{/ 1}} #link-to属性在 routeName语句可以应用之前重新计算并从显示中消除该链接。所以Ember崩溃了:

#if

以上示例不是我复杂的后退按钮代码。刚剥离的例子。

1 个答案:

答案 0 :(得分:1)

如果您对多个#if解决方法感兴趣,请看这里看起来很糟糕。

//controller
path: 'foo',
arg: [1],

isFoo: Ember.computed.equal('path', 'foo'),
isBar: Ember.computed.equal('path', 'bar'),

actions: {
  toggle: function () {
    if (this.get('isFoo')) {
      this.set('path', 'bar');
      this.set('arg', [1, 2]);
    } else {
      this.set('path', 'foo');
      this.set('arg', [1]);
    }
  }
}

//template
  {{#if isFoo}}
    {{#link-to 'foo' arg.[0]}}
      {{path}}
    {{/link-to}}
  {{/if}}
  {{#if isBar}}
     {{#link-to 'bar' arg.[0] arg.[1]}}
       {{path}}
    {{/link-to}}
  {{/if}}

http://jsbin.com/rapevaditi/edit?html,js,output