DoneJS StealJS jQuery++ FuncUnit DocumentJS
5.33.3
6.0.0 4.3.0 3.14.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-compat
      • can-map-define
      • can-observable-array
      • can-observable-object
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Views
      • can-attribute-observable
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-element
      • can-stache-route-helpers
        • routeCurrent(hash)
        • routeUrl(hashes)
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • steal-stache
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-tag
      • can-fixture
      • can-fixture-socket
      • can-local-store
      • can-memory-store
      • can-ndjson-stream
      • can-query-logic
      • can-realtime-rest-model
      • can-rest-model
      • can-set-legacy
      • can-super-model
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
      • can-string
      • can-string-to-any
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
      • can-type
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

routeUrl(hashes)

  • Edit on GitHub

Returns a url using route.url.

routeUrl( hashes... [,merge] )

Calls route.url with hashes as its data argument and an optional merge. routeUrl can be used in conjunction with other helpers.

This can be used on its own to create <a> hrefs like:

<mock-url></mock-url>
<cooking-example></cooking-example>
<script type="module">
import {Component} from "can";
import "//unpkg.com/mock-url@5";

Component.extend({
  tag: "cooking-example",
  view: `<a href='{{ routeUrl(page="recipe" id=5) }}'>{{recipe.name}}</a>`,
  ViewModel: {
    recipe: {
      default() {
        return {name: "apple pie"};
      }
    }
  }
});
</script>

This produces (with no pretty routing rules):

<a href='#!&page=recipe&id=5'>{{recipe.name}}</a>

Parameters

  1. hashes {Hash Expression|undefined}:

    A hash expression like page='edit' recipeId=id. Passing undefined has the effect of writing out the current url.

  2. merge {Boolean}:

    Pass true to create a url that merges hashes into the current can-route properties.

    In the following example notice that #!&page=recipe is in hash before clicking the link. After the link is #!&page=recipe&id=5:

    <mock-url></mock-url>
    <cooking-example></cooking-example>
    <script type="module">
    import {Component, route} from "can";
    import "//unpkg.com/mock-url@5";
    
    Component.extend({
      tag: "cooking-example",
      view: `<a href='{{ routeUrl(id=5, true) }}'>Apple Pie</a>`,
    });
    route.data.set("page", "recipe");
    route.start();
    </script>
    

Returns

{String}:

Returns the result of calling route.url.

Use

The following example uses routeUrl and routeCurrent(hash) to create links that update can-route’s page attribute:

<my-nav></my-nav>
<script type="module">
import {Component, route} from "can";

Component.extend({
  tag: "my-nav",
  view: `
    <a {{^ routeCurrent(page='home') }}
      href="{{ routeUrl(page='home') }}"
      {{/ routeCurrent }}
    >home</a>
    <a {{^ routeCurrent(page='restaurants') }}
      href="{{ routeUrl(page='restaurants') }}"
      {{/ routeCurrent }}
    >restaurants</a>
    {{# eq(routeData.page, 'home') }}
      <h1>Home page</h1>
    {{ else }}
      <h1>Restaurants page</h1>
    {{/ eq }}
  `,
  ViewModel: {
    routeData: {
      default() {
        route.register("{page}", {page: "home"});
        route.start();
        return route.data;
      }
    }
  }
});
</script>

It also writes out the current url like:

{{ routeUrl(undefined, true) }}

This calls route.url({}, true) which has the effect of writing out the current url.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 5.33.3.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news