Docs for the #1276 fix

This commit is contained in:
Pierre-Yves Gerardy 2016-09-02 22:05:58 +02:00
parent a34685d7a4
commit 2e6a2ae5d9

View file

@ -52,13 +52,13 @@ Argument | Type | Required | Description
##### route.get ##### route.get
Returns the current routing path, without the prefix. Returns the last fully resolved routing path, without the prefix. It may differ from the path displayed in the location bar while an asynchronous route is [pending resolution](#code-splitting).
`path = m.route.get()` `path = m.route.get()`
Argument | Type | Required | Description Argument | Type | Required | Description
----------------- | --------- | -------- | --- ----------------- | --------- | -------- | ---
**returns** | String | | Returns the current path **returns** | String | | Returns the last fully resolved path
##### route.prefix ##### route.prefix
@ -94,14 +94,12 @@ This method also allows you to asynchronously define what component will be rend
`routeResolver.onmatch(vnode, resolve)` `routeResolver.onmatch(vnode, resolve)`
Argument | Type | Description Argument | Type | Description
------------------- | --------------------- | --- --------------- | --------------------- | ---
`vnode` | `Vnode` | A [vnode](vnodes.md) whose attributes object contains routing parameters. If the routeResolver does not have a `resolve` method, the vnode's `tag` field defaults to a `div` `resolve` | `Function(Component)` | Call this function with a component as the first argument to use it as the route's component
`vnode.attrs` | `Object` | The [routing parameters](#routing-parameters) `args` | `Object` | The [routing parameters](#routing-parameters)
`vnode.attrs.path` | `String` | The current router path, including interpolated routing parameter values, but without the prefix. Same value as `m.route.get()` `requestedPath` | `String` | The router path requested by the last routing action, including interpolated routing parameter values, but without the prefix. When `onmatch` is called, the resolution for this path is not complete and `m.route.get()` still returns the previous path.
`vnode.attrs.route` | `String` | The matched route **returns** | | Returns `undefined`
`resolve` | `Function(Component)` | Call this function with a component as the first argument to use it as the route's component
**returns** | | Returns `undefined`
##### routeResolver.render ##### routeResolver.render
@ -113,8 +111,6 @@ Argument | Type | Description
------------------- | --------------- | ----------- ------------------- | --------------- | -----------
`vnode` | `Object` | A [vnode](vnodes.md) whose attributes object contains routing parameters. If the routeResolver does not have a `resolve` method, the vnode's `tag` field defaults to a `div` `vnode` | `Object` | A [vnode](vnodes.md) whose attributes object contains routing parameters. If the routeResolver does not have a `resolve` method, the vnode's `tag` field defaults to a `div`
`vnode.attrs` | `Object` | A [vnode](vnodes.md) whose attributes object contains routing parameters. If the routeResolver does not have a `resolve` method, the vnode defaults to a `div` `vnode.attrs` | `Object` | A [vnode](vnodes.md) whose attributes object contains routing parameters. If the routeResolver does not have a `resolve` method, the vnode defaults to a `div`
`vnode.attrs.path` | `String` | The current router path, including interpolated routing parameter values, but without the prefix. Same value as `m.route.get()`
`vnode.attrs.route` | `String` | The matched route
**returns** | `Vnode` | Returns a vnode **returns** | `Vnode` | Returns a vnode
--- ---
@ -266,12 +262,12 @@ m.route.prefix("/my-app")
### Advanced component resolution ### Advanced component resolution
Instead of mapping a component to a route, you can specify a RouteResolver object. A RouteResolver object contains a `onmatch()` method and a optionally a `render()` method. Instead of mapping a component to a route, you can specify a RouteResolver object. A RouteResolver object contains a `onmatch()` method and/or a `render()` method.
```javascript ```javascript
m.route(document.body, "/", { m.route(document.body, "/", {
"/": { "/": {
onmatch: function(vnode, resolve) { onmatch: function(resolve, args, requestedPath) {
resolve(Home) resolve(Home)
}, },
render: function(vnode) { render: function(vnode) {
@ -329,7 +325,7 @@ var Login = {
m.route(document.body, "/secret", { m.route(document.body, "/secret", {
"/secret": { "/secret": {
onmatch: function(vnode, resolve) { onmatch: function(resolve) {
if (isLoggedIn) resolve(Home) if (isLoggedIn) resolve(Home)
else m.route.set("/login") else m.route.set("/login")
}, },
@ -377,7 +373,7 @@ function load(file, done) {
m.route(document.body, "/", { m.route(document.body, "/", {
"/": { "/": {
onmatch: function(vnode, resolve) { onmatch: function(resolve) {
load("Home.js", resolve) load("Home.js", resolve)
}, },
}, },
@ -391,7 +387,7 @@ Fortunately, there are a number of tools that facilitate the task of bundling mo
```javascript ```javascript
m.route(document.body, "/", { m.route(document.body, "/", {
"/": { "/": {
onmatch: function(vnode, resolve) { onmatch: function(resolve) {
// using Webpack async code splitting // using Webpack async code splitting
require(['./Home.js'], resolve) require(['./Home.js'], resolve)
}, },