Skip to content

Releases: vuejs/vue

v0.10.6

29 Jul 04:02
Compare
Choose a tag to compare
  • fix v-style error when value is falsy or a number. ( thanks to @dmfilipenko )
  • fix the built-in currency filter error when value is a string ( thanks to @dmfilipenko )
  • fix Vue.require for building with Component v1.0+ ( thanks to @kewah )
  • Allow template nodes to be passed as a template option ( thanks to @jordangarcia )
  • vm.$destroy() now accepts an optional argument noRemove. When passed in as true it will leave the vm's DOM node intact after the vm is destroyed.

v0.10.5

06 Jun 19:40
Compare
Choose a tag to compare

This is a bug fix release.

Improvements

  • mixin methods are now properly tracked in computed properties.
  • v-style now respects the !important suffix. (#278)
  • lazy option is now automatically inherited if child VM doesn't have this option explicitly set. (#284)
  • v-on now works properly on iframes from the same origin. (#290)

Fixed

  • #249 Fixed transitions on some Android 4.1 devices (thanks to @bpierre)
  • #253 Fixed parsing error on attribute names containing colons
  • #267 Removed extra cloneNode in v-partial (thanks to @dyu)
  • #276 & #281 Fixed child vms removed before parent's transition finishes
  • #282 Fixed v-with not processed before other directives
  • #288 Fixed v-with circular updates

v0.10.4

25 Apr 19:59
Compare
Choose a tag to compare

New

  • Uses more robust template to DocumentFragment conversion so that table/option elements are properly handled, and SVG tags are created with proper namespace.

Changed

  • When using v-repeat on an Array of primitive values, changing $value from the repeated instance will no longer sync the change back to the original Array. See explanation in b50e5a5

Fixed

v0.10.3

26 Mar 23:43
Compare
Choose a tag to compare
  • introduced a new, more robust directive parser that fixes issues like #201
  • make sure directives are compiled in the order they appear in the markup
  • fix some Bindings removing wrong subscribers of their dependencies when they are unbound.

v0.10.2

25 Mar 04:21
Compare
Choose a tag to compare
  • fix #198 v-repeat diff not working properly with identifier

v0.10.1

24 Mar 08:13
Compare
Choose a tag to compare
  • Fix #195 filters not working in attribute inline bindings

v0.10.0: Blade Runner

23 Mar 19:00
Compare
Choose a tag to compare

"A coding sequence cannot be revised once it's been established." -Tyrell

Release post

New

  • Literal directives can now contain interpolation tags. These tags will be evaluated only once at compile time. An example usage is conditionally decide which component to instantiate with v-component="{{type}}". Doc.
  • Attributes listed in the paramAttributes option now accept mustache interpolations too. They will also only be evaluated once.
  • v-repeat now accepts an argument which will be used as the identifier for the wrapped object. This allows more explicit property access in repeaters. Doc.
  • Added v-view directive which binds to a string value and dynamically instantiate different components using that string as the component ID. Doc.
  • Added filterBy and orderBy filters for v-repeat. Doc.
  • Custom filters that access properties on its this context will be considered computed filters. Doc.
  • You can now access the event in v-on handler expressions as $event. Example: <a v-on="click:handle('hello', $event)">Hello</a>
  • Interpolation delimiters can now be customized via the delimiters global config option. Example: Vue.config({ delimiters: ["[", "]"] }) will change the matched interpolation tags to [[ ]] for text bindings and [[[ ]]] for html bindings.

Changed

  • {{>yield}} syntax has been deprecated. A Web Components spec compatible content insertion mechanism using <content> elements has been introduced. Doc.
  • To use a component as a custom element, the component ID must now contain a hyphen (-). This is consistent with the current custom element spec draft.
  • v-repeat Arrays' augmented methods have been renamed from set to $set(index, value) and remove to $remove(index | value). The prefix better differentiates them from native methods. The replace method has been removed.
  • When iterating over an Object with v-repeat, the object no longer gets a $repeater array. Instead, the object is now augmented with two methods: $add(key, value) and $delete(key), which will trigger corresponding view updates.
  • v-if now creates and destroys a child ViewModel instance when the binding value changes, instead of simply removing/inserting the DOM node. In addition, it can no longer be used with v-repeat. Use v-show or the new built-in array filters instead.
  • v-with can no longer be used alone. It now must be used with either v-component or v-view. v-component can also be used as an empty directive just to create a child VM using the default Vue constructor.
  • Production build now strips all warnings and debug logs. To leverage debug: true, use the development version. The development version now has more detailed warning messages.

Fixed

  • event.stopPropagation() and event.preventDefault() inside v-on handlers now work as expected.
  • parent option now works properly when used in Vue.extend
  • Mustache bindings inside <textarea> are now properly interpolated before being set as value.

Internal

  • v-component, v-with and v-if have been re-written for a cleaner compile flow.
  • v-repeat has been re-written to use refined diff algorithm which triggers minimum DOM manipulations when the array is set to a different instance containing overlapping elements. This makes it efficient to pipe an Array through filters.
  • template option now directly clones native <template>'s content when available.
  • Overall performance improvements for both initialization and rendering.

0.10.0 Release Candidate

17 Mar 17:34
Compare
Choose a tag to compare
Pre-release

New

  • Literal directives can now contain mustache interpolation tags. These tags will be evaluated once at compile time. An example would be conditionally choose which component to create with v-component="{{type}}".
  • Attributes listed in the paramAttributes option now accept mustache interpolations too. They will also only be evaluated once.
  • v-repeat now accepts an argument which will be used as the identifier for the wrapped object. This allows more explicit property access in repeaters.
  • Added v-view directive which binds to a string value and dynamically instantiate different components using that string as the component ID. See the updated routing example.
  • Added filterBy and orderBy filters for v-repeat. example
  • Custom filters that access properties on its this context will be considered computed filters. Any directive that uses a computed filter will be forced into a computed directive even when the binding is a simple keypath.
  • You can now access the event in v-on handler expressions as $event. Example: <a v-on="click:handle('hello', $event)">Hello</a>
  • Interpolation delimiters can now be customized via the delimiters global config option. Example: Vue.config({ delimiters: ["[", "]"] }) will change the matched interpolation tags to [[ ]] for text bindings and [[[ ]]] for html bindings.

Changed

  • To use a component as a custom element, the component ID must now contain a hyphen (-). This is consistent with the current custom element spec draft.
  • v-repeat Arrays' augmented methods have been renamed to $set(index, value) and $remove(index | value) to better differentiate from native methods. The replace method has been removed.
  • When iterating over an Object with v-repeat, the object no longer gets a $repeater array. Instead, the object is now augmented with two methods: $add(key, value) and $delete(key), which will trigger corresponding view updates.
  • Production build now strips all warnings and debug logs. To leverage debug: true you now have to use the development version.
  • v-if now creates and destroys a child ViewModel instance when the binding value changes, instead of simply removing/inserting the DOM node. In addition, it can no longer be used with v-repeat. Use v-show or the new built-in array filters instead.
  • v-with can no longer be used alone. It now must be used with either v-component or v-view. v-component can also be used as an empty directive just to create a child VM using the default Vue constructor.

Fixed

  • event.stopPropagation() and event.preventDefault() inside v-on handlers now work as expected.
  • parent option now works properly when used in Vue.extend
  • Mustache bindings inside <textarea> are now properly interpolated before being set as value.

Internal

  • v-component, v-with and v-if have been re-written for a cleaner compile flow.
  • v-repeat has been re-written to use refined diff algorithm which triggers minimum DOM manipulations when the array is set to a different instance containing overlapping elements. This makes it efficient to pipe an Array through filters.
  • The compiling procedure has been further optimized and instantiation perf has increased roughly 20%.

v0.9.3

03 Mar 00:51
Compare
Choose a tag to compare

New

  • v-with can now be used to bind a parent VM's data property to the child VM with a different key, e.g. v-with="childKey: parentKey". Doc here and here.
  • added parent instantiation option. This allows developer to programmatically create nested VM instances. Doc.
  • added new VM instance property: $options. This can be used to access custom properties in instantiation options. Doc.
  • added interpolate global config option. When set to false Vue.js will skip interpolation for all mustache bindings. This is useful when there is server-rendered user content that could potentially include mustache bindings.

Changed

  • when creating custom directives, the developer now need to explicitly pass in isLiteral: true, isEmpty: true or isFn:true to create literal, empty or function directives.

Fixed

  • $index and $key are no longer directly attached to data objects. They are now meta properties that can only be accessed on VM instances, not the data objects themselves, since the same data object can have different $index or $key when observed by different VMs.
  • Fixed replace: true option causing compiler.el and vm.$el to be pointing to the old, replaced element.
  • array.splice(0) now properly empties the array in supported browsers.
  • When printing an object, e.g. {{$data}}, changes inside Array elements now properly propagate out of the Array and trigger change to the object containing the Array.

v0.9.2

25 Feb 22:31
Compare
Choose a tag to compare

Fixed

  • #136 default value for paramAttributes
  • #137 skipping transition due to removed force layout