Changelog page changelog source 2.3.27 ( Sep 15 2016 ) Adding PhantomJS from NPM for a newer version updating core docs to use todo/{todoId} route template syntax Backporting parent-to-child compute syntax from can-stache-bindings Backporting stache binding fix for special values. #2370 2.3.26 ( Aug 17 2016 ) Port can-observation changes for adds updateUntil for dynamic depths Making colons in keys work Fixed nested if-s and each helper in attributes update map.attr value name 2.3.25 ( Aug 10 2016 ) Set readOnly property based on val Change propagation in a batch with late bindings - P(1) ~12 Support svg camelCase elements. fix #1541 can.Component should show a warning if tag name is missing a hyphen 2.3.24 ( May 19 2016 ) Pass list items to .sort(fn) and don't set the comparator Browserify build with stache is not working Properties with serialize: false should not be stringified Fixing error compiling cjs module with JSPM Fix mustache core mapping 2.3.23 ( Apr 08 2016 ) Fixes #2343. calling simple helper now includes all arguments Stache promise support doesn't work with ES6 promises Cannot bind to event with a dash (e.g. "-") Deprecate can.isDeferred. More accurate can.isPromise. 2.3.21 ( Mar 18 2016 ) #each leaking memory in stache IE8: Stache renders radio buttons with incorrect value Infinite batch change in 2.3.20 causes out of order rendering 2.3.20 ( Mar 08 2016 ) Make define properties work on can.List Create a CanSimpleDocument constructor Infinite batching Form reset won't work with two-way bindings on elements. w/ CanJS 2.3.15 2.3.19 ( Mar 04 2016 ) Fast path scope computes can be unbound then rebound. Bugfix: elems must be an array for can.inserted() routeUrl helper, merge option not working Component fires inserted twice on append. Call expressions with hash expressions are called with args reversed. 2.3.18 ( Mar 03 2016 ) Make getter / setter converter functions possible with stache helpers Fix uppercase html parsing Move where %root is added to a component’s initial viewModel data Type in a component’s VM doesn’t work correctly with lists 2.3.17 ( Feb 19 2016 ) Documentation for can.Deferred reject is not correct Properties on a can.route.map are coerced to strings when they should not be can-value does not teardown binding Stache parser creating incorrect output console.log.apply not supported on IE11? 2.3.16 ( Feb 16 2016 ) Documentation for can.List.unshift.apply is not correct Switch define docs to use new example version. Batched change notifies child component before parent stache binding ../ looks up wrong property on maps can.Map constructor is observable Route/Map triggering too many changes {{#if}} statement within partial gets displayed outside partial 2.3.15 ( Feb 15 2016 ) adds jquery as a dep 2.3.14 ( Feb 05 2016 ) double get A trapped and "not observed" observed info object would still be observed. 2190 canjs api update Define getters run twice. setVal is missing on first run. Batching/Binding Issue Fix map.attr with empty string. Set jQuery package version using Caret 2183 update guides @index is double wrapped compute object in mustache/stache helper in latest version (V2.3.8) 2.3.12/2.3.13 ( Feb 01 2016 ) jquery 2.2 in peer deps not supported Keys aren't documented calling methods directly on an instance of a can.Map with can.compute.read Parser is not allowing anchor tags as child of inline elements can.viewModel mentioned in the navigation but not the root page contents Asynchronous virtual properties cause extra recomputes Child bindings are called before the parent in Stache Dynamic select menus don't live bind correctly 2.3.11 ( Jan 21 2016 ) makes events fired as a result of a batch happen after any previous batches can.batch.afterPreviousEvents firing too late makes jQuery work without public buildFragment and overwritable domManip jQuery 2.2 compatible. 2.3.10 ( Jan 14 2016 ) Computes that are registered to be updated don't get updated if they are unbound nested switch statements cause a nodeList error 2.3.9 ( Jan 11 2016 ) Partial defined by registerView throws error after element is modified stache system plugin needs nodeList 2.3.8 ( Jan 04 2016 ) vdom innerHTML implementation should append a text node for script tags User DOM not found when rendering multiple <content>'s as a result of a batched "set" option value as empty string are not selected with two way binding Sub expression as named parameter FF debugging functions conflicting with can.Map Dynamic select menus don't live bind correctly 2.3.7 ( Dec 15 2015 ) Incorrect view model context with <content/> List replace with deferreds does not take into account stale/overtaken deferreds two-way binding bug regarding select dropdowns when value is set in inserted or init support backtrack path in export {^to-parent} bindings Inconsistent binding with "with" helper can.compute | NaN -> NaN dispatches a change event {{(at)index}} doesn't work with arrays inside arrays Using a define getter breaks pushstate url updates. Wrong context inside <content/> expressions are caching Args computes in the wrong spots Dynamic select menus don't live bind correctly 2.3.6 ( Dec 11 2015 ) Cannot read property 'pop' of undefined can.view.txt does not handle binding hookup on self-closing elements correctly %root property is serialized when can.Map instance is shared between a component viewModel and a can.route 2.3.5 ( Dec 03 2015 ) Binding an undefined property to a component runs the setter Passing a function reference with @ runs it 2.3.4 ( Dec 02 2015 ) Update each.js Stache leaks Stache removes attribute "id" from input elements if value should be interpolated makes dynamic bindings work makes attributes that point to {} or {{}} work without enclosing quotes Dynamic bindings broken Update deprecated_models.md quotes around attributes deprecation warning not showing up Stache templates leak for various reasons can.each doesn't work if elements is missing hasOwnProperty 2.3.3 ( Nov 30 2015 ) can.__isRecording observes doesn't understand can.__notObserve computes on Map prototypes are not readable by can.compute.read Live binding on a derived attribute breaks when it's removed from then added back to the page. Compute binding order Compute binding problem with setter elements and attributes doc Bug with conditional attribute %index doesn't work with can.Map values in master Rendering style tag with stache template Documentation Elements and Attributes The @index context should be skipped by ../ 2.3.2 ( Nov 13 2015 ) adds warning for mismatched binding syntaxes Don't remove development code from development build. makes exporting function work, but not pretty Fix issue #1202 and 'unless' helper Add navigator object to vdom global object - #2056 Add navigator object to vdom Cannot export a component's prototype function to the references scope New 2-way bindings run setter twice with default values Added a setter for class attr to handle svg elements where className cann… Previous behavior restored for "old" two-way binding syntax All can-import tests are passing again Importing a template doesn't work with the new syntax Formalize two-way binding with selects. New bindings updating the scope when created Dead links svgEl.className is readOnly so live binding does not work stache does not update view with can.List and deep properties can.jquery.dev.js doesn't include dev parts of code After change of comparator @index in view stays the same for elements eq helper called twice Condition (helper) inside can-EVENT doesn't work Stache conditionals within custom attributes break in 2.3.0-pre.2 2.3.1 ( Oct 29 2015 ) Make define part of the core global var "GLOBALCAN" fails Allow relative can-imports Replaced references to element.innerText in tests so that they pass i… references scopes are not available to bindings nested in components References of 'can' not locally scoped in modules Adding scoped reference to 'can'. Removing dependancy on Global 'can'. 2.3.0 ( Oct 23 2015 ) sort plugin: comparator set on init does not keep list sorted Stache #each teardown throws an error on observable functions New bindings do not always update the scope Binding docs adding routeUrl and routeCurrent merges binding logic Returning 0 from a helper displays nothing fixes a bug with deep methods like foo.bar() in bindings #each doesn't work with else Do not use pushstate routing on file:// protocol URLs Add support for drag-and-drop events in can.Component Operators and call expressions Can-event gets broken in production if method does not exist. can.isArray behaves differently using can.util.jquery vs can.util.domless Rename ~ helper Optimize sort plugin inserts (#1883) Missing Doc can.Deferred.prototype sub-expression methods that return data are broken slice and join are not observable Add ability to override can.route's batch with other batching implementations can/view/autorender doesn't import $.fn.viewModel Conditional "readonly" attribute does not work "for" attribute is "htmlFor" property Fixes #1862. Objects with addEventListener now bindable Add textarea example to can-value docs switch/case might not work when nested Pushstate should prevent default for javascript:// links stache expressions don't work right with parent context values Makes sure unbind is not call unnecessarily on can.Lists passed to can.view.live.list can.view.live.list unbinds from the list unnecessarily Stache subexpressions Steal Stache plugin should provide module id and path to templates Create ~ helper for joining to the baseURL Pass options to helpers Pass parent scope helpers to helper's options Merges master into minor Parent helpers inside helper Live-list diffing Expand the Observables guide page Add screenshots to the 2.3 guides can.List filter should return lists of the same type Work-in-progress version of the new guides Observable promises is not documented Revert "Use [.] to represent a template's viewModel" Sort plugin excludes batchNum; Maybe fires unnecessary events Sort plugin evaluates insert index for batched events Sort plugin swaps equal value items Deprecate can.Map.prototype.COMPUTE-ATTR autorender system plugin should normalize the main Import view model Stache and Mustache registerSimpleHelper can-href can.view.href Document setting context of Stache data helper Changing context in a Stache template breaks the data helper {{#helper}} documentation examples are missing the "#" getHelper for can.stache and can.mustache should not require options Better docs on iterating performance of #section and #each. methods get arguments passed to them Dev Mode Warning on "watch" properties Proposal: can-scope for exporting scope into the surrounding context. can.view.attr won't trigger in can.mustache if no value is provided Documentation raises error 404 in can.route.map demo can.Compute as a prototype based can.compute Document how mustache tags handle lists Native CanJS Event Streams can.mustache #if renders !! when value changes can.Model.models documentation unclear Mustache helper has no rendered output, if the output is 0. can-href link helper registerSimpleHelper Putting a can.compute on a Component scope throws define::set doc issues Mustache deferreds 951 can model promises {{#with}} Mustache helper pushes can.compute into Scope, breaks can.compute.read can-value="." not working properly Dev Warning : mutable values in can.Control.defaults can.route.default Live binding of not-yet-defined attr in a Component's template fails can.route triggers event two times for setting nested object. Make promises observable 2.2.8/2.2.9 ( Sep 11 2015 ) View bound to method breaks on re-evaluation fixed regression component control destructor Fix typo in default generator dependent property resolution logic attr.split() causes errors in IE10,11 in live.js on CanJS 2.2.6 when using jQuery Only attempt unbind when __bindEvents is defined can.Component events registered twice in 2.2.x can.map throws strings, not errors. Handle a few sort plugin edge cases 2.2.7 ( Jul 24 2015 ) can.compute change handler context should be the function not the can.Compute object Provide a getter and setter compute interface for non-map-like targets Unable to load canjs in node.js environment Makes scope.computeData listen to every observable in scope when value is not defined. <select can-value="{value}" with undefined value and option without value Conditional can-EVENT bindings don't work in stache Event handlers attached on Component's init (event) are not called. 2.2.6 ( May 20 2015 ) Fix calling define getters on map initialization Cleans up computes and fixes deep .attr calls. can/define with type: 'string' given values of null or undefined returns 'null' or 'undefined' Mangled file in AMD builds Compute memory leak with nested properties can.Model.findAll should reject if parseModels returns a non-array data property. Cannot bind to future nested properties Check for vulnerability against iOS 8 object length bug can.stache helpers that rely on array replacement don't work, but work in can.mustache Helpers bind to nested properties differently in stache/mustache Cannot read value of property defined with "get" AND "set" methods Use Function.prototype.bind if available Compute code gets inserted into DOM with Stache sometimes Problem with defines called out of order can.compute nested key behaviour inconsistency with map bindings bug with component that has an if inside an inverse tag 2.2.5 ( Apr 22 2015 ) #each helper should use it's own NodeList Nested can.Component with <content/> tag causes detached DOM nodes Nested can.Component causes detached DOM nodes can.appendChild passed null el CanJS 2.2.4 can.List.replace() incorrect behavior allow comporator fn return any negative value can/map/define default behaviors with "*" 2.2.4 ( Apr 03 2015 ) This makes list update sorting when comparator changes. 2.2.3 ( Apr 03 2015 ) Fix AMD build, bring back can/util/library and can/util/can Stache sets up live-binding with plainJS objects and the section helper Autorender denormalizes typeModule in Steal production mode DOM appears to be held in memory in certain conditions with components rather than be destroyed #each causing duplicates Individual ready counters. Do not dispatch events during a set to a compute backed property. define getters throw two events autoload does not work with standalone build Prevents updating scope due to scope changes, avoiding an infinite loop problem. Batched Changes can create cycles in components two way bindings steal specific handling has been removed in 2.2.2 dists Makes sure promise observe data has a cid and the promise can be read from New promises are not rebound and can not read alternate properties on promises List#sort does not cause {{#each key}} to update component fire inserted event twice with zepto svg element inside stache template is not rendred correctly 2.2.2 ( Mar 31 2015 ) makes can-EVENT arguments values instead of computes and functions Fixes section helper with lists View model docs cleanup can.stache and lists {{#data.items}} 2.2.1 ( Mar 24 2015 ) List.prototype.__set should not assume to create an array for indices out of bounds Prevents listening to events that happen while reading the compute v2.2.0 - The included global.define breaks UMD defs in other scripts cleans up can.Compute.read and adds template-obserbable promises Update components.md Adding viewModel to Components control instance Update the binding count correctly after calling removeEvent #1521 define map properties in the same order they're defined Problem with defines called out of order 2.2.0 ( Mar 16 2015 ) Renaming and adding can.Component viewModel property. Set the context correctly when an async compute has a length of 1 Typo (use of @params instead of @param) in can.Model's documentation Added a note and some sample code illustrating relative can.view.Scope.attr lookups. Adds can.Compute, and "compute" type and setter / getter paring for define pugin can-value doesn't two way bind with a key value that has 0 and one values to a checkbox spaces around a key with can-value do not two way bind can-EVENT can not call intermediate functions before calling the final function can.fixture.store with objects does not work for .create can.Model resource is not creating "destroy" static method Don't change route if the only change would be prepending "!" Make RequireJS work with can.import Complete the Sort plugin Can attr set checkboxes add/remove events always give you back arrays Moved jquery out of travis.yml file and into devDependencies #1418 can.route.setState doesn't deep clean the route travis.yml before_script Observable can/map/backup plugin removing bound scope properties on destroy CanJS can-value does not work for multi-select when options are rendered using Map Insert can.compute into can.Map Dev warning: custom tag is already defined {{#is}} and {{#eq}} helper can.List.prototype.sortIndexes is defined but not referenced A splice where can.List ends up exactly the same should not produce any events. #each doesn't work with null values that change to a can.List Memory leak in CanJS template/model can-autorender can.stache and can.mustache templates don't resolve partial names against the scope. can.stache will import components it depends on can.import getOwnPropertyDescriptor causes fatal error in IE8 can/map/define default behaviors with "*" updating module names for builder booleanAttr for components Models with no id (undefined or null) are placed in model store can/map/define doesn't work more than one level deep. rename can.Component scope to context? can.List.prototype.sort is not working can-EVENT arguments {{prop}}CHECKED{{/prop}} doesn't work if someone manually changes input checked and then changes value elsewhere (visible in TODOMVC) can-event doesn't pass extra arguments Default empty route event fires twice on page load can-event trows an error when inside #if block can.route - Allow changing the route (and URL) without saving to browser history Block level elements should be able to render inside anchor tags can.fixture has no way to allow AJAX calls to circumvent it, if necessary Sorting a List doesn't update in a template correctly can-EVENT removed in live bindings doesn't unbind Lexical semantics for can.Component Constructor names visible in debugger Fix can.List event docs, as well as an event ambiguity new fixture store API is not documented Improvement: can.list.pushAll and can.list.unshiftAll shortcuts Replacing can.Map.List and can.List.Map Ensure can-value bound input stay in sync with compute can-value becomes out of sync when a compute rejects the new value input with can-value keeps wrong value prevented with setter plugin can.list.sort triggers event before sorting but none after Improve can.scope and $.fn.scope code and add assignment support Pass local helpers to sub templates. can.batch.start/stop causes can.List with length>1 to render last element twice Advanced linking / setting of attribute values and computes Live binding does not maintain the cursor position. 2.1.4 ( Nov 21 2014 ) change: Make can.Construct work with getter / setters (and super plugin) change: Update compute.read to also return constructor functions change: property for which no validations are defined throws an exception change: Reading from undefined values in scope. change: Fixed function overwrite change: Using attrData.scope.compute as a setter throws an error if the getter hasn't been called change: Setting computes created with computeData will throw if set first change: Fix IE7 character access change: $.fn.scope undefined when using CommonJS change: Cannot read properties of can.Map inside a property's value method change: Removed madeMap and getMapFromObject from LazyMap since it's unused change: Dispatch correct arguments with can.List:splice if inserting and removing the same elements. change: Inconsistent results when extending parsed can.Models change: scope objects with constructor function properties are treated as methods change: Mustache warning on helpers change: Extending a Model overwrites parseModels() change: Unused variable in can.Model change: Fixed Mustache getHelper() so that it doesn't need second argument change: can.route.map docs change: can.camelize and can.hyphenate not documented change: Issue: can.view(function, deferred, callback) does not work change: can.stache dosent render custom tags with Colon ":" change: Documenting what new Model.List() does with no args passed change: Bug: can.List.splice(-1) causes JS exception inside binding framework change: can.Map code block cleanup and fix failure to render. change: can.view.preload breaks can.view.attr change: Fix rendering of <col> inside <table> in templates. 2.1.3 ( Aug 25 2014 ) change: IE 8+10 fixes change: makes sure can.compute.read can read a final can.route value change: Allows maps passed to can.Map's constructor change: Makes can.route.current is observable change: component does not update scope on id, class, and data-view-id attribute changes change: Prevent 'leaking reads' on single bind computes change: can.Map constructor fails if passed another Map change: Incomplete documentation for can.List.prototype.filter change: can.Map method not become computable automatically change: can.route.current is not live-bindable change: setupSingleBindComputeHandlers leak temporary observables. change: can.compute.read should not call can.route change: Fix for #1132 change: Fix for #1143 change: Fixes compute.read with a Map wrapped in a compute change: Error when using a helper with 2 string arguments change: Simplifying and clarifying lazymap docs change: Documenting how to access Map properties containing a dot change: Fix the tabbing/spacing in the validation markdown files, and re-path th... change: Fix @typedef name to be dot-separated. change: Parse Error when a stache template contains SVG content change: test and fix #1079 change: Fixes #1078 - add offset support to @index change: Fixes #1074 - Only call findAll once if argument is a deferred change: Document accessing attributes with dot in the name change: can.Construct passes original arguments to setup and fixes can.Model's setup accordingly change: Corrected pushstate tests and update can.test.route change: can.stache read function bug change: Model.resource is not working with inherited classes change: Id and class attributes are not ignored in the route URL change: @index is not using offset param change: new Foo.List(Foo.findAll()) calls Foo.findAll twice change: Store docs change: Multiple issues with Model change: can.LazyMap docs do not read clearly 2.1.2 ( Jun 16 2014 ) change: Adds event target back for Map events change: Evaluate and cache text sections properly change: can.Map events Object missing target property change: Fix can.debounce and can.throttle context change: can.stache is returning incorrect values for DOM attributes change: Fixed incorrect scope for can/event's delegate and undelegate change: Warnings for map/define change: 1050 component tagnames change: Regression in component naming change: Model destroyed bug change: Remove NodeLists from Stache change: #1019 Unless does not live bind change: Making routes not greedily consume slashes by default change: Map define warn change: calling reverse on a model list breaks its "destroyed" bindings change: can/event delegate/undelegate aren't using the correct scope change: Codeblocks styling in COMPUTE-ATTR change: nested component within an #if is not live bound change: {{#unless}} does not live bind change: #716 can.Model now warns the developer when no static properties are specified change: fixes map unbind bug change: 404 on can.view.Scope().readOptions docs change: Fix rendering of <col> inside <table> in templates. change: fix documentation for can.batch.stop change: can.stache performance change: Bug with conditionally nested components using stache change: can.batch documentation is wrong change: can.debounce keeps the context after being called the first time change: Dev warning when can.Model is extended without static properties. 2.1.1 ( May 21 2014 ) change: 404 on define example change: Fixing define demo change: Fixing up component and scope docs change: Helpers are now passed into partials. Fixes #791. change: can.mustache: {{else}} does not work for {{#unless}} block change: Define demo broken in chrome change: stache: Custom elements in IE8 contain a colon change: Adding ability to mix can.event into can.Controls safely change: Mixing in can/event conflicts with can.Control-based classes change: added can parameter change: adding tests for can.route.map change: Scope docs change: Component warn change: add warning when component attribute is ignored change: stache: Using {{else}} inside of an attribute change: Misspelling in stache docs - differences from mustache change: Upgrading html5shiv to 3.7.2 change: Stache conditionally nested components change: Bug with conditionally nested components using stache change: Bug with stache using view/bindings change: Wrong context in serialize of can.map.define change: Contributing clarification change: can.Mustache: using local helpers inside partials 2.1.0 ( May 05 2014 ) change: fixes IE8 change: IE fixes change: stache issue with steal and single quotes change: Update component docs about passing in data via attributes change: can.Mustache, can.EJS and can.view.mustache, can.view.ejs are depreicated change: Finalize can.Map.define docs change: Warning not using extend. change: Adding guide for developing plugins change: List promise documentation. change: Mustache dev logging change: can.Map.define change: Makes can-value and can-EVENT work with {} change: Fixes bugs with custom self-closing tags and empty custom tags. change: {} works with can-value and can-click change: Stache doesn't register correctly with steal change: can.Mustache is converting a can.Model to a can.Map change: can-value handling null in addition to undefined for select elements change: can.view.live docs change: Updates to recipes page change: can.stache using ^ inside a tag throws an exception change: Fix implementation of ./ change: can.stache won't render if self-closing content tag is used change: Add "./" to mustache to denote selecting a property from current scope change: can/event change: Subclassed Model.List should inherit from their parent Model.List change: Docco inline documentation change: Adds computed attributes for can.List instances change: Emit events for can.List.prototype.reverse change: Fix inverse ^ to be able to use {{else}} change: Adding test for #each with child sections change: Remove all references from Model.List on model destroy. change: Test for Mustache if sections removing all content change: Update can.fixture request data with id change: Settable can.computes change: can.Map.prototype.define change: batchNum issues change: Change syntax for passing in template objects to Components to use {} change: changing cross-binding comparison from === to == change: can-value when cross-bound with input value using === comparison change: Restful behavior not fully implemented in can.fixture.store.findOne change: Fix for calling removeAttr with number type (on lists) change: Bug in log() method in can.view.Mustache change: Added delegate/undelegate fallbacks to bind/unbind and fixed broken Zepto/Dojo delegate implementations change: can.route crossbind to can.Map change: Inverse ^if doesn't work correctly with an else change: #each with nested #if not working as expected change: Mustache live binding throws "Cannot read property 'length' of undefined" in can.view.elements.after change: can.Model.List should extend an existing List change: Dev warning when mustache doesn't find a helper change: Recursive mustache template ends with "Maximum call stack size exceeded" change: Dev warning when mustache doesn't find a variable change: can.Components ignores attributes containing "id" change: Adds a can.List promise plugin. change: can.List.filter change: Content not removed when it should be change: defining 'can' missing. setting it as a dependancy change: Calling .fn() without arguments should forward scope by default change: Path accessor to prevent walking up the scope change: Observe attributes for #637 change: Attributes event API change: can.view.tag and can.view.attr change: 2.1 API Changes change: can.view returns a renderer function that returns a string change: Added parseModels and parseModel to fix duplicate instances being created after create an update. change: Added test to issue #560 change: can.Model#save: values for attributes not found in response are replaced with their defaults change: Select with multiple-selection for can.view.bindings (i.e. two-way binding via can-value) change: Update on can.Model's nested object throws error on recursive mustache template change: can.Model: one URL property for REST resource change: Adding wildcards to attributes plugin change: Inconsistency when passing functions (e.g. descendants of can.Construct) to helpers. change: Mustache - TypeError: Cannot read property 'childNodes' of null change: Make can.extend's deep copy clone CanJS classes 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/canjs/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/canjs/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.3.27 ( Sep 15 2016 )
2.3.26 ( Aug 17 2016 )
2.3.25 ( Aug 10 2016 )
2.3.24 ( May 19 2016 )
2.3.23 ( Apr 08 2016 )
2.3.21 ( Mar 18 2016 )
2.3.20 ( Mar 08 2016 )
2.3.19 ( Mar 04 2016 )
inserted
twice on append.2.3.18 ( Mar 03 2016 )
Type
in a component’s VM doesn’t work correctly with lists2.3.17 ( Feb 19 2016 )
2.3.16 ( Feb 16 2016 )
2.3.15 ( Feb 15 2016 )
2.3.14 ( Feb 05 2016 )
map.attr
with empty string.2.3.12/2.3.13 ( Feb 01 2016 )
2.3.11 ( Jan 21 2016 )
2.3.10 ( Jan 14 2016 )
2.3.9 ( Jan 11 2016 )
2.3.8 ( Jan 04 2016 )
2.3.7 ( Dec 15 2015 )
2.3.6 ( Dec 11 2015 )
2.3.5 ( Dec 03 2015 )
2.3.4 ( Dec 02 2015 )
hasOwnProperty
2.3.3 ( Nov 30 2015 )
../
2.3.2 ( Nov 13 2015 )
2.3.1 ( Oct 29 2015 )
2.3.0 ( Oct 23 2015 )
can-scope
for exporting scope into the surrounding context.2.2.8/2.2.9 ( Sep 11 2015 )
2.2.7 ( Jul 24 2015 )
2.2.6 ( May 20 2015 )
data
property.2.2.5 ( Apr 22 2015 )
2.2.4 ( Apr 03 2015 )
2.2.3 ( Apr 03 2015 )
2.2.2 ( Mar 31 2015 )
2.2.1 ( Mar 24 2015 )
global.define
breaks UMD defs in other scripts2.2.0 ( Mar 16 2015 )
can-value
do not two way bindcan.List
event docs, as well as an event ambiguity2.1.4 ( Nov 21 2014 )
2.1.3 ( Aug 25 2014 )
2.1.2 ( Jun 16 2014 )
2.1.1 ( May 21 2014 )
2.1.0 ( May 05 2014 )
{}
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!