Mark
Mark

Reputation: 1224

archetypal code from Ember's own site not working -- any ideas?

There are several extensive code examples on a tutorial page at the ember web site that are all failing in a specific way. As this is supposed to be archetypal ember code ostensibly to direct newcomers how to code in ember, I am at a loss. Could someone who knows ember have a look at the code. (An example is directly above that bookmark I listed, and includes both the templates and js.

Specifically what's happening is that the main root page template has an outlet 'footer' that's only written to by the subpages, but when you navigate back to the home (root/index) page, that outlet still has the info from the subpages showing, which it shouldn't. The same thing is happening with the template called 'traversal' whose outlet is only written to by the subpages, but that outlet is also still showing info in it when you navigate back to the root.

I did run across a function disconnectOutlet in the API docs, but it says you shouldn't hardly ever have to use it, and its not in the example code. I tried it - evidently not actually in the api anymore.

If you want to run that code above you'll need the following from the ember site:

  <link rel="stylesheet" href="css/style.css">
  <script src="js/libs/jquery-1.7.2.min.js"></script>
  <script src="js/libs/handlebars-1.0.rc.1.js"></script>
  <script src="js/libs/ember-1.0.pre.min.js"></script>

Upvotes: 0

Views: 95

Answers (1)

Panagiotis Panagi
Panagiotis Panagi

Reputation: 10087

As you mentioned, disconnectOutlet was added by this pull request. You can use it to remove an outletView (by name) from a controller. For example, remove myOutletViewName from applicationController when exiting a certain route:

  aRoute: Ember.Route.extend({
    exit: function(router) {
      router.applicationController.disconnectOutlet('myOutletViewName')
    }
  })

Note that if you use {{outlet}} in your template, without specifying a name, the default name is view so you do:

router.applicationController.disconnectOutlet('view')

Upvotes: 2

Related Questions