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
        • fromAttribute
      • 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-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

fromAttribute

  • Edit on GitHub

Create a property and attribute binding on a StacheElement.

fromAttribute

Using fromAttribute will set up attribute and property bindings for a StacheElement:

<my-el name="Matt"></my-el>

<script type="module">
import { fromAttribute, StacheElement } from "can";

class MyElement extends StacheElement {
    static view = `
        <p>{{this.name}}</p>
    `;
    static props = {
        name: { type: String, bind: fromAttribute }
    };
}
customElements.define("my-el", MyElement);
</script>

Purpose

For creating bindings on a StacheElement for attributes and properties. If you set an attribute that will be reflected within the StacheElement properties.

Pass Conversion object

It is possible to pass a conversion object for attributes that need to be parsed before setting the property, the passed object can be any object that has parse and stringify functions, such as the global JSON object.

<my-el person="{'firstname': 'Cherif', 'age': 37}"></my-el>

<script type="module">
import { fromAttribute, StacheElement } from "can";

class MyElement extends StacheElement {
    static view = `
        <p>{{this.firstname}}</p>
        <p>{{this.age}}</p>
    `;
    static props = {
        person: { type: Object, bind: fromAttribute(JSON) }
    };
}
customElements.define("my-el", MyElement);
</script>

The conversion is also possible with custom attribute names, like the following example where the person property is set and converted through person-info attribute:

<my-el person-info="{'firstname': 'Cherif', 'age': 37}"></my-el>

<script type="module">
import { fromAttribute, StacheElement } from "can";

class MyElement extends StacheElement {
    static view = `
        <p>{{this.firstname}}</p>
        <p>{{this.age}}</p>
    `;
    static props = {
        person: { type: Object, bind: fromAttribute('person-info', JSON) }
    };
}
customElements.define("my-el", MyElement);
</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