@@ -929,42 +929,68 @@ var ko = require('knockout')
929929
930930ko . router = require ( './lib/router' )
931931
932- } , { "./lib/router" :7 , "knockout" :"knockout" } ] , 6 :[ function ( require , module , exports ) {
932+ } , { "./lib/router" :8 , "knockout" :"knockout" } ] , 6 :[ function ( require , module , exports ) {
933933'use strict'
934934
935935var ko = require ( 'knockout' )
936936
937937var router = require ( './router' )
938938
939+ ko . bindingHandlers . route = {
940+ init : function ( el , valueAccessor ) {
941+ ko . applyBindingsToNode ( el , {
942+ attr : {
943+ href : ko . pureComputed ( function ( ) {
944+ return router . _basePath + ko . unwrap ( valueAccessor ( ) )
945+ } )
946+ }
947+ } )
948+ }
949+ }
950+
951+ } , { "./router" :8 , "knockout" :"knockout" } ] , 7 :[ function ( require , module , exports ) {
952+ 'use strict'
953+
954+ var ko = require ( 'knockout' )
955+
956+ var router = require ( './router' )
957+
958+ function ViewModel ( ) {
959+ this . component = router . _component
960+ this . ctx = router . _ctx
961+ }
962+
939963ko . components . register ( 'ko-component-router' , {
940- viewModel : function ViewModel ( ) {
941- this . component = router . component
942- this . ctx = router . ctx
943- } ,
964+ viewModel : ViewModel ,
944965 template : "<div data-bind='component: {" +
945966 "name: component," +
946967 "params: ctx" +
947968 "}'></div>"
948969} )
949970
950- } , { "./router" :7 , "knockout" :"knockout" } ] , 7 :[ function ( require , module , exports ) {
971+ module . exports = ViewModel
972+
973+ } , { "./router" :8 , "knockout" :"knockout" } ] , 8 :[ function ( require , module , exports ) {
951974'use strict'
952975
953976var ko = require ( 'knockout' )
954977var page = require ( 'page' )
955978
956979function Router ( ) {
957- this . component = ko . observable ( )
958- this . ctx = ko . observable ( )
980+ this . _component = ko . observable ( )
981+ this . _ctx = ko . observable ( )
959982}
960983
961984Router . prototype . start = function ( config ) {
962- if ( config . basePath ) {
963- page . base ( config . basePath )
964- }
985+ if ( typeof config === 'undefined' )
986+ config = { }
987+
988+ this . _basePath = config . basePath || ''
965989
990+ page . base ( this . _basePath )
966991 page . start ( config )
967992
993+ require ( './binding' )
968994 require ( './component' )
969995}
970996
@@ -1004,10 +1030,10 @@ Router.prototype.route = function(route) {
10041030
10051031 page . apply ( page , args )
10061032
1007- function getComponentSetter ( _el ) {
1033+ function getComponentSetter ( component ) {
10081034 return function ( ctx , next ) {
1009- self . component ( _el )
1010- self . ctx ( ctx )
1035+ self . _component ( component )
1036+ self . _ctx ( ctx )
10111037 ctx . handled = true
10121038 next ( )
10131039 }
@@ -1016,5 +1042,5 @@ Router.prototype.route = function(route) {
10161042
10171043module . exports = new Router ( )
10181044
1019- } , { "./component " :6 , "knockout" :"knockout" , "page" :2 } ] } , { } , [ 5 ] ) ( 5 )
1045+ } , { "./binding " :6 , "./component" : 7 , "knockout" :"knockout" , "page" :2 } ] } , { } , [ 5 ] ) ( 5 )
10201046} ) ;
0 commit comments