DoneJS StealJS jQuery++ FuncUnit DocumentJS
6.0.1
5.33.2 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
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-model
      • 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-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
        • static
          • currentRule
          • data
          • deparam
          • isCurrent
          • param
          • register
          • rule
          • start
          • stop
          • url
          • urlData
        • deprecated
          • link
      • 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

stop

  • Edit on GitHub

Stops listening to the data observable and tears down any setup bindings.

route.stop()

Stops listening to changes in the URL as well as the observable defined in data, and removes the current binding.

<mock-url></mock-url>
<script type="module">
import "//unpkg.com/mock-url@^5.0.0";
import {route} from "can";

route.register("{page}", { page: "" });
route.start();
route.data.page = "home";

// Changing the route is not synchronous
setTimeout(() => {
  route.stop();
  route.data.page = "cart"; // hash is still "home"
  console.log( location.hash ) //-> "#!home"
}, 1000);

</script>

Returns

{can-route}:

The can-route object.

Use

If you need to disconnect an observable from the URL, call stop. To reconnect, call start again.

In the example shows a possible use reason for stopping can-route. When the user logs out the page doesn't change, though the hash still updates. Notice the logout/login functions start and stop route. When logged out you can't change the page, even though the hash still updates.

<mock-url></mock-url>
<my-app></my-app>
<script type="module">
import {StacheElement, route } from "can/everything";
import "//unpkg.com/mock-url@^5";

class MyApp extends StacheElement {
    static view = `
        <a href="{{ routeUrl(page="dashboard") }}">dashboard</a>
        <a href="{{ routeUrl(page="admin") }}">admin</a><br />
        {{# if (showLogin) }}
            <button on:click="login()">login</button>
        {{ else }}
            <button on:click="logout()">logout</button>
        {{/ if }}
        <h1>{{componentToShow}}</h1>
    `;

    static props = {
    routeData: {
      get default() {
        route.register("{page}");
        route.data.page = "admin";
        route.start();
        return route.data;
      }
    },
    get componentToShow() {
      return this.routeData.page;
    },
    get showLogin() {
      return this.routeData.page === "login";
    }
  };

  logout() {
    route.data.page = "login";
    route.stop();
  }
  
  login() {
    route.start();
    route.data.page = "admin";
  }
}

customElements.define("my-app", MyApp);
</script>

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

On this page

Get help

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