Version 3.1.0
This release focuses mainly on performance and stability/compatibility improvements, plus small enhancements to existing functionality (yes, we're saving the big new features for v3.2). So, in 3.1:
New features
- #1190 - new rate limiting functionality to have better control and flexibility over throttle/debounce scenarios
- #1003 -
renderTemplatenow supports thenameargument being observable. - #647 - add
valueAllowUnsetoption that allows thevaluebinding to accept a selected value that is not currently in the list of options - #627 - provide access to dependency count and whether it is the first evaluation within a computed
- #1151 - provide item index to array util method callbacks
- #1272 - deferred computeds will now be evaluated on a manual subscription, if not previously evaluated
- #865 - ko.utils.domNodeDisposal.cleanExternalData extensibility point can be overriden (perhaps to prevent jQuery.cleanData from being called in some scenarios)
Perf improvements
- #775 - in browsers that support setting proto, set subscribable/observable/computed/observableArray prototype rather than copy methods from "fn" objects.
- #1221 - use objects instead of arrays to track computed dependencies (can be major perf boost in older IE when there are lots of dependencies on a single computed/observable).
- #1199 - various performance optimizations related to array operations
Bugs fixed
- #844 - prevent older IE errors with
optionsbinding used in separate document - #1081 - prevent option placeholder from being re-added in update
- #1191 - remove jQuery workaround related to
checkedbinding when using newer jQuery versions. - #1193 - look for jQuery instance in
ko.applyBindings, if it was not available when KO was loaded. This helps to prevent issues with KO not taking advantage of jQuery, if it was not loaded before KO. - #1206 - for observable view models,
$rawDatashould be the observable - #1207 - "arrayChange" tracking no longer assumes all items added are new on a splice
- #1208 - older IE issue with
optionsbinding related tooptionsCaptionbeing removed on each update - #1209 - prevent a deferred computed that is disposed before evaluation from taking dependencies when evaluated
- #1214 - prevent errors when using the
valuebinding with jQuery templates - #1255 - track observables accessed in getBindingAccessors - helps backwards compatibility with custom binding providers
- #1289 - prevent adding a disposal callback when
disposeWhenNodeIsRemovedvalue is not a node - #1306 -
valuebinding - fix issue related to autocomplete tracking always firing update in browsers that don't fire change event on autocomplete