Path Inspector acquires a list of your applications paths at run time and constructs a parallel tree of nodes for querying. This allows you to ask questions about your applications routes without having to probe them directly. You can use this service throughout your application to answer different questions such as:
- Is a given routeName for a leaf route?
- Is a given route a leaf route?
- What are all of the application leaf routeNames?
- What are the routeNames of all siblings for a given routeName?
- What is the parent routeName for a given routeName?
- What are the immediate child routeNames for a given routName?
Does it deal with dynamically generated routes? No, not yet.
You can view a demo app that uses the inspector HERE, along with the API DOCS.
Is it production ready? While current implementation is being used in production apps the api is subject to change until 1.0.0 is reached
ember install ember-cli-path-inspector
Each node in the parallel tree has 6 properties:
- parent: The current nodes parent node
- nodeName: Given a path to a leaf node, this is the segment representing the current node.
- routeName: What you would expect, the path leading to the the route.
- children: A list of immediate child route names for the current node.
- depth: The row level of the node in the route tree (0 indexed)
- isLeafNode: Whether or not the node represents a leaf node in the parallel tree
// ...snip...
setupController(controller, model) {
this._super(controller, model);
if(this.get('pathInspectorService').isLeafRouteName(this.get('routeName')) {
// do stuff
}
// or...
if(this.get('pathInspectorService').isLeafRoute(this)) {
// do stuff
}
}
// ...snip...
// ...snip...
setupController(controller, model) {
this._super(controller, model);
this.get('pathInspectorService.routeNames').forEach((routeName) => {
// do stuff
});
}
// ...snip...
// ...snip...
setupController(controller, model) {
this._super(controller, model);
this.get('pathInspectorService.leafRouteNames').forEach((routeName) => {
// do other stuff
});
}
// ...snip...
// ...snip...
setupController(controller, model) {
this._super(controller, model);
this.get('pathInspectorService').siblingPathsForRouteName(this.get('routeName')).forEach((routeName) => {
// do other stuff
});
}
// ...snip...
ember server
- Visit your app at http://localhost:4200.
ember test
ember test --server
ember build
For more information on using ember-cli, visit http://www.ember-cli.com/.