Changelog page changelog source 2.0.7 ( Mar 26 2014 ) change: Configuration for AMD development build change: 2.0.6 dev errors change: AMD dev build 2.0.6 ( Mar 14 2014 ) change: Allow type inference for fixture parameters. change: Updating sourceURL syntax to use # instead of @ change: Changing typeof check to a check for apply (#681) change: Nested component tags of same type throws an error change: #773: Fixing date compare logic in can.Object.same. change: Enable removeAttr on Map keys with dot change: can.Object.same: compare logic is incorrect when it comes to dates change: scanner.js error: Using //@ to indicate sourceURL pragmas is deprecated change: Bug in sample code on http://canjs.com/ homepage change: #713 cleanup can.Control, fixup contributing guide change: can.computes that return nulls can be used with #each change: can.fixture no longer says id 1 and id "1" are the same change: Fixes updated callback to can.compute's on/off to simply need to be called. change: compute signature not working change: 2.0.5 idOrUrl require.toUrl() change documented change: can.view Breaking backward compatibility in v2.0.5 amd change: confusing example for can.Control template data passing change: Canjs not working in default android browser. change: sourceURL comment in Scanner.prototype.scan() cause error on IE8 2.0.5 ( Feb 04 2014 ) change: fixes looking up @ and sets links to docco change: Fixing truncation of special attribute (src and style) values containing '=' change: Fixes IE in all browsers for all libraries change: Fixes can.Map::compute to handle deeply nested properties change: Live binding attribute in a truthy section does not work change: Pluginify tests change: Prevents attributes like can-click and can-value from being converted to scope properties change: JSHints CanJS change: Live binding attributes with no '=' does not work change: Fixed the pushstate #652 test to ensure that it should pass in all libraries and phantomjs change: Ignore attributes fix change: Changing can.Control.route to match pushstate (#612) change: Rewrote the pushstate #652 test for stability purposes change: Fix for incorrect ignore attributes pattern change: Development mode builds change: Migrated the fix for can-value with radio buttons from bindings to elements change: Fixing the test for pushstate #652 change: Moving can-value test and fixing IE7 radio button bug change: #686 - Fix document.contains issue on Android change: Android - document.contains change: can.List.Map documentation change: Suggested fix to broken attr behaviour change: Fixes a memory leak with live binding. change: Unexpected behaviour while using a Map change: Live-Binding memory leak change: Unescaped attributes change: scope as Map constructors do not respect default "@" values change: no doubled history states change: Fixing variable format so it doesn't break Steal build change: routed links must descend from pushstate root change: util/zepto doesn't use $.fn.remove() change: template files relative to requirejs baseUrl change: exclude actual root from deparam change: Partials within #each not working. change: Undefined compute live bind fixes change: 2.0.4 Live @index still not working correctly change: Broken live-binding with can.compute if compute is updated with a can.Construct change: can.Mustache / can.view.Scope: Can't access static properties from an object's constructor. change: #each on undefined attributes not working anymore in 2.0.4 change: can-value in checkboxes in IE7 change: can.computes with can.Map.prototype.attr() do not set up bindings change: Changing can.Control.route selectors to match pushstate.js 2.0.4 ( Dec 23 2013 ) change: 2.0.4 test fixes change: Makes live safeStrings work change: Working @index in mustache templates change: Fixes nested components and <content> tags. change: Fixes a problem with double inserted events change: benchmark.js and minor performance improvements change: Node lists rewrite change: temporary fixed mustache index calculation with simple can.List when remove first item of list change: Serialization change: can.Component ATTR value is undefined when passing a function as a scope change: restore will not remove properties that were added since the last backup change: can.Mustache.safestring does not work with computed properties change: Items pushed on lists don't get removed from the DOM in some cases change: Functions globally defined when it shouldn't be change: undefined list passed to {{#each}} change: Added test for inserted event bug (live binding block) change: Support Offline Testing change: When using certain html-comments, can.view.Scanner does not recognize them correctly change: teardownMap slows perfomance drastically change: test for component content extension stack overflow bug change: Split element classnames fails with {{#if}} change: fixed an error that is caused by the timeout firing after the element has been removed from the DOM change: Please add trailing slash support for can.route.pushstate change: Overwrite can.Map.List.prototype.serialize to avoid infinite loops change: Iterating over component data not as expected change: can-value shows "undefined" if bound to undefined value change: Maximum Call Stack Exceeded When Destroying a nested model change: Individual test pages should run in CI as well 2.0.3 ( Nov 26 2013 ) change: fixes #577 change: Text live binding remains bound change: fixes for #575 - non-component custom tags change: Non component custom tag problems. change: fixes for jQuery's inserted event and some quick inserted helpers change: Component inserted event doesn't work with jQuery 1.10 change: fixes #568 and makes nulls render to empty string change: Mustache loops do not print 0. change: Observe builder update change: Providing a can.Map constructor function to a component's scope does not work. change: 552 index calculation change: @index is not calculated correctly when there are identical elements in the list change: Inside the eventHandler this.scope is not set (as it's called on the scope itself) change: Bower support, multiple jQuery versions 2.0.2 ( Nov 14 2013 ) change: cloning setter comptues change: Event listeners leak in 2.0.1 change: can.VERSION for 2.0.1 says @EDGE rather than 2.0.1 change: 'key' property breaks mustache helpers change: component does not respect can.compute passed via attributes change: Wrapping can.compute in can.Map breaks live-binding 2.0.1 ( Nov 12 2013 ) change: Fixes #538 helpers aren't called is data passed to the template happens ... change: Update included plugins and release tasks change: mustache: 'with' string is interpreted as with helper keyword change: can.Component two way binding issues change: New lines are not handled properly in special attributes change: can.Control: {document} events are not working change: "{document} body click" breaks in latest change: pushstate() and preventDefault() were not working on default route becau... change: Make $#domManip patch jq2.0-compatible change: broken livebinding after replace can.Map property or remove property change: fixes a problem with each not working if the whole list is replaced change: can.Map stack exceeded on circular data structures change: Fixes #512 #513, sees the glorious return of can.camelize and his trusty sidekick, can.hyphenate change: List.join is not compute-able change: Fix to multiple tags not necessarily having the right context. Close #515 change: avoids jQuery's event system when binding on observes which fixes #280 change: Implement can.Mustache.safeString change: can.Component helpers context issue change: can.camelize change: can.Component template attributes name case change: Makes attribute arguments passed to a component two way binding change: Fix Model.List.prototype.findAll() in IE8. change: Return a new can.compute every time (new can.view.Scope()).compute() is called change: Mustache and EJS issues with attributes and truthy blocks change: Handlebars {{#if}} losing scope of var change: can.Model.List() updates its length after destoy() of one of its models only if it has bindings change: can.Mustache doesn't support SafeString change: can.Mustache: inconsistent behavior when updating nested attributes of an Observe change: Support Handlebars @key and @index directives change: Accessing a parent array property from within mustche change: can.Observe binds for nested object. First time event trigger is only on top level object instead of nested one. 2.0.0 ( Nov 07 2013 ) change: Replacing lists live-binding change: Fix destroy params change: Special attribute binding change: Fix Mustache binding lists in helpers change: Certain HTML attributes need special live-binding change: Destroy templates and attributes. change: Fix some typo's in the documentation. change: attr() not working in some cases in IE9 change: docs update: can.Object dependency for can.fixture change: View renderer functions don't work with Deferreds change: Issue: can.view.ejs(str) and can.view.ejs(id, str) return different responses change: can.Mustache: #if sections are rendered twice when activated from live-binding change: can.route.ready should not be called automatically change: fixed issue #470 can.route default values are not working change: can.route.ready called multiple times change: Mustache two way helpers don't work as documented change: Can't 2-way bind Array change: Bower component does not work with steal change: Live Binding Broken with Models with Nested Sub-models change: String parameter not working as expected for: jQuery.fn.control / jQuery.fn.controls change: error passing can.Observe.List to custom Mustache element helper change: Wrong variable name in the Guide. change: Model.destroy request params change: Fixing can.ajax missing test for error handler with mootools change: Fixing error that occurs when an item in an Observe.List contains a comp... change: Observe#on change: Array is skipped on serialize change: can.Mustache live-binding on can.route attributes change: create can.Component for custom tags change: Feature/route to string change: Default can.route.ready to false change: Attributes automatic conversion to Map/Model specified type change: can.route.pushstate mishandles hash fragments change: Needed host check for pushstate.js change: Support for rendering document fragments (returned from the renderer function) in the templates change: Model.save: handle response data or return data in save callback change: AMD Consistency change: Extensionless views fail change: can.Model.findAll promotes usage of XSS attack vector change: Allow context change after element has been rendered change: Make it easier to setup 2-way-binding and other interesting behaviors change: Accessing attributes in Model destroy change: mustache: support for backtrack path change: Live-bound dynamic attributes don't get updated properly if they don't exist on initial execution change: The can.Model.models arrayName should be configurable like observable's 'id' property change: can.observe.delegate fails on compound selectors with wildcards 1.1.8 ( Sep 24 2013 ) change: can.Observe.List.Sort: fix for case when comparator is not a function change: makeFindOne example cache error: http://canjs.com/docs/can.Model.makeFindOne.html change: Two return statements in Mustache.getHelper change: recommended syntax breaks can.route change: Prevent infinite recursion on unbindAndTeardown when Observe's _bindings is undefined and Observe is self-referential change: Catch only exceptions thrown by modelfunc (fix #454 and re #384) change: CanJS Swallowing Errors 1.1.7 ( Jul 23 2013 ) change: can.Model.model attribute serialization fix change: Build cleanup change: .model should always serialize Observes change: Preloaded recursive views fail to render their recursions change: Use .attr() when evaluating errors in validations change: can.compute error with can.Observe change: Fix the bug where mustache each would fail if called with the empty list change: Mustache's each fails with empty list change: can.sub should return null if value is undefined or null change: can.VERSION shows @EDGE but what about 2 years later? change: can.compute-friendly validations change: Test AMD builds change: fixture based CRUD test fails in phantomjs change: can.Model Fails Silently When Server Doesn't Return an Array for findAll 1.1.6 ( May 30 2013 ) change: Mustache doesn't read computed List.length correctly change: Removing the semi-colon splitter in EJS transform, too unreliable #242 change: EJS transforming wasn't processing semi-colons properly within parentheses #242 change: Adds support for EJS shared blocks #242 change: . in helpers change: 1.1.6pre - something going wrong with can.computes() in Mustache templates change: can.route references delegate but does not include it change: Binding to an Observe.compute value is broken change: Added validatesNumericalityOf to validations change: Include can.Object in CanJS distribution change: can.Map makes can.Deferred into an observable change: Update sub to not break when str is undefined change: List memory leak fix change: Integrated incremental live lists change: can.view.render update is sometimes undefined change: Model.store and live bind does not handle same object initialized more times change: Prevent errors if destroy is called multiple times on a Control instance change: Outputting attribute and value containing '=' truncates the value (EJS & Mustache) change: can.sub fix remove param. Allow only to remove properties + tests change: Can.string getNext function fix change: Maximum Call Stack Exceeded When Destroying a nested model change: Add VERSION property to CanJS Object change: Better handling of null values in Mustache sections. change: model override should work for create and update not just findone and findall change: Download builder should include build version in output change: Don't treat links to "#" as "/" change: Run all tests also on pluginified files change: Observable list's length attribute does not update with live binding using dot separated accessors change: Twitter Bower component of CanJS change: ejs files loose variables after $.each loop 1.1.5 ( Mar 28 2013 ) change: Added Mustache.resolve to evaluate truthyness in a common way #333 change: Fixed incorrect passing of context stacks with partials in Mustache #288 change: Mustache {{#if}} does not correctly evaluate boolean value change: deparam: parse params with remaining ampersand change: Null objects within observes weren't working properly with Mustache sections #307 change: Mustache: Pass raw array data as the context instead of trying to resolve it #281 change: Allow to pass an array index to removeAttr in Observe and Observe.List change: fixing no arg helpers change: Mustache interpolation issues using Observes inside of an attribute tag change: isObject is undefined change: Allow dots in Observe keys change: data-view-id being rendered in tag closing change: Execute startBatch callbacks change: HTML comments with either an element callback (EJS) or a helper (Mustache) rendered incorrectly change: Prevent leak from computes that have no bindings. change: Treat "--" as delimiter of empty element change: Fixing can.ajax with mootools change: CanJS tries to parse JSON-map which contains a dot in the key change: can.compute evaluations for the default Mustache handlers change: can.Mustache: Array of objects passed as context to partials, breaks data helper and rendering. change: adding greedy space to model url splitter change: Fix for numeric inputs not living binding change: Empty strings not handled properly change: can.Control event delegation problem change: fixing computes from converting type change: can.view with Deferreds doesn't pass failures change: HTML comments trip EJS rendering change: can.Map.prototype.each overrides {{#each}} Mustache helper. change: Any model with a "." in the key name will cause observe.js _set() to throw and error change: Item.List splice method does not convert inserted elements to Item type change: Mustache: DOM exception when applying certain block patterns change: Mustache: Interpolated values when iterating through an Observe.List fail if not surrounded by a DOM node 1.1.4 ( February 5, 2013 ) fix: Haschange binding and route ready for all libraries fix: Get converters and .attr working the right way with nested objects fix: CanJS/ejs table+tbody rendering of a list gives nested tbody items fix: Mustache: Inconsistent treatment of function attributes fix: EJS renders "@!!@" instead of Model data when a Deferred is passed into can.view that takes a long time to resolve fix: Mustache: registered helpers do not create the context stack correctly fix: Mustache: only the current context is passed to partials, instead of the full stack fix: IE8 error when setting up observe list fix: Resetting a live-bound <textarea> changes its value to __!!__ fix: hashchange binding still broken in mootools fix: can.Mustache - with context lost in nested sections fix: Enabled passing in helpers and partials to Mustache views, (1) fix: Make the resolved data available when using can.view fix: .attr method doesn't merge nested objects fix: Live binding on observe.lists nested in an observe doesn't work fix: Attributes/Converters Issue fix: Observe.List push/unshift doesn't fire when sort comparator is set fix: Observe.List sort doesn't use custom method passed fix: test&fix: null values crashing validations fix: EJS rendering null value fix: can.Map sort plugin doesn't trigger add events fix: Observe.List sort plugin erroring on item removal fix: Live binding on observe.lists nested in an observe doesn't work fix: Observe.List sort doesn't use custom method passed add: removeAttr can.Model attribute add: Calling destroy on non persisted model add: jQuery 1.9.x support add: Mustache Helpers that accept computes and return an element should work 1.1.3 ( December 11, 2012 ) fix: Empty model displays !! as input values fix: Rendering models in tables produces different results than an equivalent observe fix: data Mustache helper doesn't parse attribute properly fix: Partial Mustache views assume the right parent tag for live-binding fix: Mustache partials don't parse properly fix: can.Control will fail to find $.event.special in a $.noConflict(true) scenario fix: Nameless view renderers should return document fragment fix: compute only updates once when a list's contents are replaced add: Updated jQuery hashchange plugin add: Generate computes from an observe property add: Add can.List.prototype.replace add: [Return resolved data models in view callback](https://github.com/bitovi/canjs/issues/1log 1.1.2 ( November 28, 2012 ) fix: Solve issue when stealing mustache templates - can/view/mustache returns can object now fix: Controls shouldn't bind to templated events that contain undefined values fix: Resetting a form changes input values to !! fix: Further AMD build improvements fix: Strange conversion of nested arrays to Observe.List 1.1.1 ( November 19, 2012 ) fix: @!!@ Appears on Page With EJS and Table in non-IE Browsers fix: can.deparam leaks to global scope fix: nested attr() call on a model with List attributes blows away existing List add: https://github.com/bitovi/canjs/issues/162 Improved AMD support, see #155 1.1.0 ( November 13, 2012 ) add: AMD module support for each dependency (#46) can.util Updated jQuery to 1.8.2 Updated Zepto to 1.0rc1 Updated YUI to 3.7.3 can.Mustache Added Mustache/Handlebars support with Live Binding can.view Changed passing jQuery a node list instead of a fragment in View Modifiers can.EJS fix: the way EJS handles multiple hookups in the same attribute fix: Nested Loops in EJS fix: can.EJS template rendering issue fix: multiline elements in EJS can.route fix: hashchange binding with mootools broken can.Control add: control does not listen to touchmove event on controller itself can.Map add: List binding on .length of an object fix: validation error that incorrectly labels an attribute with a value of 0 as empty add: you can now pluralise event names to listen to matching events of that type (rather than firing a single event) add: compound sets now behave correctly fix: can.Map.delegate sets wrong event.currentTarget add: ability to assign object as attribute type in can.Map can.Model fix: can.Model with attributes that are models gets corrupted when you call attr() add: missing dependency to can/model Moved can/model/elements to can/map/elements and renamed models to instances fix: can.Model.List doesn't fire the change event on the expando properties 1.0.7 (June 25nd 2012) can.compute Fixed a global collision with can.Control. Removed globals Thanks Daniel Franz! 1.0.6 (June 22nd 2012) can.compute Added a computed value type object that can be used to represent several observe properties or a single static value. can.ejs Fixed problem with trailing text not being added to template. 1.0.5 (June 2nd 2012) can.model Added ability to overwrite model crud operations by defining a make prefixed static function, such as makeFindAll can.EJS Fixed problem with nested block statements. can.each Added optional third argument that defines the context for the iterator function. can/util/function Added can.defer method as an alias for setTimeout(function(){}, 0). can.view Fixed toId so it will work with both older and newer steal versions. 1.0.4 (May 22nd 2012) Fixed plugin build process 1.0.2 (May 20th 2012) Fixed breaking namespace issue. 1.0.1 (May 18th 2012) can.util fix: can.each now makes sure the collection being iterated is not undefined can.control add: Redirect to another controller method using a string can.model fix: Model instances in model store will be updated when findAll or findOne retrieves updated instances fixes fix: Static methods such as findOne and findAll can now be rejected. Thanks roelmonnens! can.route add: Deliminating tokens now configurable fix: Current route wins if all else equal 1.0 (May 14st 2012) Registers itself as an AMD module if define is in the window can.fixture add: a fixture plugin can.util add: a util/function plugin can.route fix: favor current route when matching fix: uses defaults to match route better, and current route is not always selected 1.0 Beta 2 (April 21st 2012) can.util change: reverse argument order of can.each change/fix: buildFragment returns non cached frag fix: zepto's isEmptyObject was broke can.observe feature: recursive observes don't blow up change: reverse argument order of can.each fix: attr change events have old value can.model fix: findOne and findAll work with super fix: model using custom id for store fix: destroy not working with templated id can.route fix: a host of bugs in libaries other than jQuery because can.route was not properly tested in other libraries. fix: can.param fixed in dojo, 1.0 Beta 1 (April 1st 2012) Released!
2.0.7 ( Mar 26 2014 )
2.0.6 ( Mar 14 2014 )
updated
callback to can.compute's on/off to simply need to be called.2.0.5 ( Feb 04 2014 )
2.0.4 ( Dec 23 2013 )
<content>
tags.2.0.3 ( Nov 26 2013 )
2.0.2 ( Nov 14 2013 )
2.0.1 ( Nov 12 2013 )
Model.List.prototype.findAll()
in IE8.2.0.0 ( Nov 07 2013 )
can.Mustache
live-binding oncan.route
attributes1.1.8 ( Sep 24 2013 )
1.1.7 ( Jul 23 2013 )
1.1.6 ( May 30 2013 )
undefined
1.1.5 ( Mar 28 2013 )
1.1.4 ( February 5, 2013 )
<textarea>
changes its value to__!!__
1.1.3 ( December 11, 2012 )
data
Mustache helper doesn't parse attribute properly1.1.2 ( November 28, 2012 )
can/view/mustache
returnscan
object now1.1.1 ( November 19, 2012 )
1.1.0 ( November 13, 2012 )
add: AMD module support for each dependency (#46)
can.util
can.Mustache
can.view
can.EJS
can.route
can.Control
can.Map
can.Model
models
toinstances
1.0.7 (June 25nd 2012)
can.compute
can.Control
.Removed globals
1.0.6 (June 22nd 2012)
can.compute
can.ejs
1.0.5 (June 2nd 2012)
can.model
make
prefixed static function, such asmakeFindAll
can.EJS
can.each
can/util/function
can.defer
method as an alias forsetTimeout(function(){}, 0)
.can.view
toId
so it will work with both older and newersteal
versions.1.0.4 (May 22nd 2012)
1.0.2 (May 20th 2012)
1.0.1 (May 18th 2012)
can.util
can.each
now makes sure the collection being iterated is notundefined
can.control
can.model
findAll
orfindOne
retrieves updated instances fixesfindOne
andfindAll
can now be rejected. Thanks roelmonnens!can.route
1.0 (May 14st 2012)
Registers itself as an AMD module if
define
is in thewindow
can.fixture
can.util
can.route
1.0 Beta 2 (April 21st 2012)
can.util
can.observe
can.model
can.route
1.0 Beta 1 (April 1st 2012)
Released!