DoneJS StealJS jQuery++ FuncUnit DocumentJS
6.6.1
5.33.3 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-deep-observable
      • 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-observable-bindings
      • 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-parser
      • can-view-scope
      • can-view-target
      • steal-stache
    • Data Modeling
      • can-connect
      • can-connect-ndjson
      • can-connect-tag
      • can-define-realtime-rest-model
      • can-define-rest-model
      • 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
    • 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-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

routeCurrent(hash)

  • Edit on GitHub

Returns if the hash values match the can-route’s current properties.

routeCurrent( hashes... [,subsetMatch] )

Calls route.isCurrent with hashes and returns the result. The following example adds the 'active' class on the anchor if route.data.page is equal to "recipes" and route.data.id is equal to 5.

<mock-url></mock-url>
<cooking-example></cooking-example>
<style>
.active {
  color: black;
  text-decoration: none;
}
</style>
<script type="module">
  import { StacheElement } from "can";
  import "//unpkg.com/mock-url@6";

  class CookingExample extends StacheElement {
    static view = `
      <a {{# routeCurrent(page='recipe', true) }}class="active"{{/ routeCurrent }}
        href="{{ routeUrl(page='recipe' id=5) }}">
        {{ this.recipe.name }}
      </a>
    `;

    static props = {
      recipe: {
        get default() {
          return { name: "apple pie" };
        }
      }
    };
  }

  customElements.define("cooking-example", CookingExample);
</script>

With default routes and a url like #!&page=recipe&id=5, this produces:

<li class="active">
  <a href="#!&page=recipe&id=5">{{ this.recipe.name }}</a>
</li>

Parameters

  1. hashes {Hash Expression}:

    A hash expression like page='recipe' recipeId=id.

  2. subsetMatch {Boolean}:

    If an optional true is passed, routeCurrent will return true if every value in hashes matches the current route data, even if the route data has additional properties that are not matched.

    In the following example notice that the active class will apply when clicking on pie, but not cake.

    <mock-url></mock-url>
    <cooking-example></cooking-example>
    <style>
      .active {
        color: black;
        text-decoration: none;
      }
    </style>
    <script type="module">
      import { StacheElement } from "can";
      import "//unpkg.com/mock-url@6";
    
      class CookingExample extends StacheElement {
        static view = `
          <a {{# routeCurrent(id='pie' true) }}class="active"{{/ routeCurrent }}
            href="{{ routeUrl(page='recipe' id='pie' }}">
            apple pie
          </a>
          <a {{# routeCurrent(id='cake') }}class="active"{{/ routeCurrent }}
            href="{{ routeUrl(page='recipe' id='cake' }}">
            chocolate cake
          </a>
        `;
      }
      customElements.define("cooking-example", CookingExample);
    </script>
    

Returns

{Boolean}:

Returns the result of calling route.isCurrent.

Use

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

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

  class MyNav extends StacheElement {
    static 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 }}
    `;

    static props = {
      routeData: {
        get default() {
          route.register("{page}", { page: "home" });
          route.start();
          return route.data;
        }
      }
    };
  }

  customElements.define("my-nav", MyNav);
</script>

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

On this page

Get help

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