DoneJS StealJS jQuery ++ FuncUnit DocumentJS
3.0.0
2.3.27

 

  • Github
  • Twitter
  • Chat
  • Forum
  • Guides
  • Core
  • Ecosystem
    • can-construct-super
    • can-define-stream
    • can-fixture
    • can-fixture-socket
    • can-jquery
    • can-stache-converters
      • Pages
        • select[multiple]
        • input[type=checkbox]
        • input[type=radio]
        • select
      • Converters
        • boolean-to-inList
        • either-or
        • equal
        • index-to-selected
        • not
        • string-to-any
    • can-stream
    • can-vdom
    • can-view-import
    • can-zone
    • steal-stache
  • Infrastructure
  • Legacy
  • Bitovi
    • Bitovi.com
    • Blog
    • Consulting
    • Training
    • Open Source
  • Chat
  • Forum
  • Star
  • Follow @canjs
  • CanJS
  • /
  • Ecosystem
  • /
  • can-stache-converters
  • /
  • not
  • / On this page
    • not

      function

      A converter that two-way binds the negation of a value.

      • source

      not(~value)

      When the getter is called, gets the value of the compute and returns the negation.

      When the setter is called, sets the compute's value to the negation of the new value derived from the element.

      Note that not needs a compute so that it can update the scope's value when the setter is called.

      <input type="checkbox" {($checked)}="not(~val)" />
      

      Parameters

      1. value {can-compute}:

        A value stored in a can-compute.

      Returns

      {can-compute}:

      A compute that will be two-way bound by can-stache-bindings as a getter/setter on the element.

      Use

      Use this converter to two-way bind to the negation of some value. For example:

      <input type="checkbox" {($checked)}="not(~val)" />
      
      var map = new DefineMap({
          val: true
      });
      
      document.body.appendChild(template(map));
      
      var input = document.querySelector('input');
      
      input.checked; // -> false
      
      map.val = false;
      
      input.checked; // -> true
      
      // Now if you click the checkbox
      map.val === true; // because the checkbox is now false.
      

      Combined with other converters

      not() can be useful when used in combination with other converters that deal with boolean conversion. boolean-to-inList determines if an item is in a list. Here we wrap not() around this conversion so that the inverse is what is saved in the map's value:

      <input type="checkbox" {($checked)}="not(~boolean-to-inList(item, list))" />
      
      var map = new DefineMap({
          item: 2,
          list: new DefineList([ 1, 2, 3 ])
      });
      
      document.body.appendChild(template(map));
      var input = document.querySelector('input');
      
      
      input.checked; // -> false
      
      // Set `item` to a value not in the list
      map.item = 4;
      
      input.checked; // -> true
      
      // Check the input, whick will set it's value to `false`
      // This will be converted to `true` by not() and pushed into the list
      
      map.list.indexOf(4); // -> 3
      
      // Remove it from the list, which will be converted to true by not()
      map.list.splice(3, 1);
      
      input.checked; // -> true
      

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