martinp999
martinp999

Reputation: 449

Ember - Saving sub-menu state

I have a sub menu that appears only when a menu item in the main menu is selected. What I want to do is save the state of the sub menu so that, when a user selects something in the sub menu, then navigates away in the main menu, that sub menu item should still be selected when they return to the sub menu. But, I'm not sure how to go about it. Any ideas?

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');});

Upvotes: 0

Views: 277

Answers (2)

martinp999
martinp999

Reputation: 449

Figured it out. I thought that ember-latest.js pointed at latest production release, it actually points at the beta of beta - canary. The transition object does not contain a handlerInfos object in prod or in beta, only in canary.

Upvotes: 0

ahaurw01
ahaurw01

Reputation: 1202

When transitioning from the A route, you can inspect the transition object and see where you're going. It is possible to stash the location where you're going (if it is a sub-route of A) and then utilize it again in the redirect hook of the AIndexRoute.

Check out this updated fiddle: http://jsfiddle.net/ahaurw01/Ce5j8/3/

Upvotes: 1

Related Questions