diff --git a/demo/app.js b/demo/app.js index c4cdf8dad..acbc2cd77 100644 --- a/demo/app.js +++ b/demo/app.js @@ -23,7 +23,50 @@ BI.$(function () { return Promise.resolve({ type: "demo.router" }); - } + }, + }, { + name: "user", + path: "/user/:name", + component: function () { + return Promise.resolve({ + type: "bi.vtape", + items: [{ + type: "bi.label", + text: "user", + height: 50 + }, { + type: "bi.router_view", + deps: 1 + }] + }); + }, + children: [{ + path: '', + component: function () { + return Promise.resolve({ + type: "bi.label", + text: 'home' + }) + } + }, { + name: 'dashboard', + path: 'dashboard', + component: function () { + return Promise.resolve({ + type: "bi.label", + text: 'dashboard' + }) + } + }, { + name: 'tables', + path: 'tables/:id', + component: function () { + return Promise.resolve({ + type: "bi.label", + text: 'tables' + }) + } + }] }]; // BI.Tree.traversal(tree, function (index, node) { diff --git a/dist/router.js b/dist/router.js index c1addf567..7f2a93478 100644 --- a/dist/router.js +++ b/dist/router.js @@ -3152,7 +3152,16 @@ created: function () { var self = this, o = this.options; cbs.push(this._callbackListener = function () { - self.tab.setSelect($router.history.current.fullPath || "/"); + var current = $router.history.current; + // 匹配的路径名(/component/:id) + var matchedPath = current.matched[o.deps] && current.matched[o.deps].path; + if (matchedPath) { + BI.each(current.params, function (key, value) { + // 把 :id 替换成具体的值(/component/demo.td) + matchedPath = matchedPath.replace(`:${key}`, value); + }); + } + self.tab.setSelect(matchedPath || "/"); }); }, render: function () { @@ -3168,12 +3177,12 @@ }, showIndex: false, cardCreator: function (v) { - return $router.history.current.matched[o.deps].components.default; + return $router.history.current.matched[o.deps].components.default; } }; }, destroyed: function () { - BI.remove(cbs, this._callbackListener); + cbs.remove(this._callbackListener); } }); BI.shortcut("bi.router_view", BI.RouterView);