灰烬 - 保存子菜单状态

时间:2013-10-17 21:13:04

标签: ember.js

我有一个子菜单,只有在选择主菜单中的菜单项时才会出现。我想要做的是保存子菜单的状态,以便当用户在子菜单中选择某些内容,然后在主菜单中导航时,该子菜单项在返回子菜单时仍应被选中。但是,我不知道该怎么做。有什么想法吗?

http://jsfiddle.net/martinp999/Ce5j8/2/

    <script type="text/x-handlebars">
    <div class="navbar">
      <div class="navbar-inner">
        <a class="brand" href="#/a/f">Main Menu</a>
        <ul class="nav">
            <li>{{#link-to 'a'}}A{{/link-to}}</li>
            <li>{{#link-to 'b'}}B{{/link-to}}</li>
            <li>{{#link-to 'c'}}C{{/link-to}}</li>
        </ul>           
      </div>
    </div>
    {{outlet}}
</script>

<script type="text/x-handlebars" id="a">
    <div class="navbar">
      <div class="navbar-inner">
        <a class="brand" href="#/a/f">Sub Menu A</a>
        <ul class="nav">
            <li>{{#link-to 'f'}}F{{/link-to}}</li>
            <li>{{#link-to 'g'}}G{{/link-to}}</li>
            <li>{{#link-to 'h'}}H{{/link-to}}</li>
        </ul>           
      </div>
    </div>
    {{outlet}}
</script>

<script type="text/x-handlebars" id="b">
B
</script>

<script type="text/x-handlebars" id="c">
C
</script>

<script type="text/x-handlebars" id="f">
F
</script>

<script type="text/x-handlebars" id="g">
G
</script>

<script type="text/x-handlebars" id="h">
H
</script>

App.Router.map(function () {
this.resource('a', function() {
    this.resource('f');
    this.resource('g');
    this.resource('h');
});
this.resource('b');
this.resource('c');});

2 个答案:

答案 0 :(得分:1)

A路线转换时,您可以检查transition对象,看看您要去哪里。可以存储您前往的位置(如果它是A的子路径),然后在redirect的{​​{1}}挂钩中再次使用它。

查看此更新的小提琴:http://jsfiddle.net/ahaurw01/Ce5j8/3/

答案 1 :(得分:0)

想出来。我认为ember-latest.js指向了最新的产品发布,它实际上指向beta - 金丝雀的beta。转换对象在prod或beta中不包含handlerInfos对象,仅在canary中。