Skip to content

Releases: vuejs/vue

0.11.6

18 Apr 07:18
Compare
Choose a tag to compare

0.11.6 is finally here!

New

  • Added inline-template param for v-component.
  • Added debounce param for v-model.
  • option param for v-model now supports filters.
  • v-model now interopts with jQuery events.

Changed

  • <content select=""> selectors now can only select top-level childNodes of the host node. This new behavior is more consistent with the Shadow DOM spec and also fixes issues where the selector can match unwanted nodes in nested transclusions.
  • JavaScript transition functions' invocation context are now always the closest vm of the node being transitioned, regardless of which vm the transition directive belongs to. This means if a node being transition is a vm's root node, that vm will be used as the this context.
  • v-repeat now uses an in-place update strategy for better DOM/instance reuse when the following conditions are met:
    • the repeated block doesn't contain components;
    • the repeated list is not using transitions.
      This change should not break existing usage.

Fixed

  • #655 directives on block instance containers are not compiled
  • #670 honor number option for select with multiple attribute
  • #684 attach/detach hooks for transcluded components inside v-if are never called
  • #695 name option should be inherited
  • #707 v-repeat not working on $data
  • #715 boolean literals not working with v-with
  • #716 unwatch causing error during destroy
  • #717 error parsing multiline expressions
  • #720 return empty string for Infinity and properly format floating point values
  • #721 support sorting by $key and $value in orderBy filter
  • #728 v-if and v-partial not calling unlink functions when unbound
  • #736 parent content loses reactivity when transcluded
  • #760 <textarea> placeholders become its value in IE10/11
  • #761 v-model not working $value inside v-repeat
  • #766 <option value=""> initial value is undefined
  • #772 reserved prefix check cannot handle Number arguments
  • #779 bi-directional filters not working in attribute interpolations
  • #781 reference errors are not handled in vm.$get
  • #783 nested repeat instances inherting parent _reused flag
  • #784 Cannot use global Date and the new keyword inside expressions
  • #791 instances with inherit:true calling unlink functions of parent when destroyed

Many Thanks to These Awesome Contributors!

0.11.5

05 Feb 21:32
Compare
Choose a tag to compare

0.11.5 is mostly about shipping the changes and fixes that were already done a while ago - fixes for current issues will land in next release.

Changed

  • Vue.nextTick now uses MutationObserver when available for asynchronous updates, and falls back to setTimeout. This should fix issues where Vue doesn't update when the tab is out of focus.
  • v-with is now two-way binding between a parent property and a child property, instead of a one-way update.

Fixed

  • Fixed an issue where v-repeat doesn't work properly on nested arrays when not using identifiers.
  • Fixed an issue where attached and detached hooks are not firing for transcluded components.
  • #626, #631, #636, #652, #657, #685

0.11.4

07 Dec 21:01
Compare
Choose a tag to compare

New

  • New directive: v-events

    This directive allows you to listen to a child component's events in the template:

    <!-- inside parent template -->
    <div v-component="child" v-events="change: onChildChange"></div>

    When the child component fires a change event (via vm.$emit('change'), not DOM events), the parent's onChildChange method will be invoked. This allows more decoupled parent-child communication without having to hard-code event listeners into the parent component.

    Note v-events can only be used together with v-component, i.e. on the root element of a child component.

  • v-style improvements

    • Now accepts both camelCase and dash-case, so both "margin-left" and "marginLeft" work the same way.
    • The old syntax for auto-prefixing (prefix with $) has been deprecated; v-style now automatically detects and caches the appropriate prefix to add when setting the styles, so you can just use non-prefixed properties without worrying about it.

Changed

  • User watcher callbacks registered via vm.$watch() are now guaranteed to be fired after directives that depend on the same data have been updated. For example, if a directive and a $watch callback both depend on the data property a, when a changes, the directive will perform the DOM update first, then the $watch callback will be called. This ensures that inside $watch callbacks the DOM will always be in a resolved state. Note this mechanism is not guaranteed when Vue.config.async has been set to false.
  • When Vue.config.debug is set to true, Vue will now automatically use synchronous mode and throw a debugger statement when there is a warning. This enables the user to inspect the full stack trace in browser dev tools.

Fixed

  • fixed a bug that causes custom element syntax + v-repeat not working together
  • #618

0.11.3

02 Dec 17:31
Compare
Choose a tag to compare
  • Fixed #615 paramAttributes not being compiled correctly

0.11.2

02 Dec 02:45
Compare
Choose a tag to compare

Changed

  • Mixins are now resolved before the option object that contains it. An example is by the time your component's created hook is called, all its mixins' created hooks would have already been called in order.
  • Mixins can be composed by including another mixin

Fixed

  • Refactored component scope compilation logic to fix a few edge cases
  • Fixed #610, #612, #613

0.11.1

01 Dec 00:25
Compare
Choose a tag to compare

Component compilation scope change

When a component is used in a parent template, e.g.:

<div v-component="child" v-show="active" v-on="click:onClick">
  <p>{{message}}</p>
</div>

The directives (v-show and v-on) and the transclusion content ({{message}}) will now be compiled in the parent's scope. That means the value of active, onClick and message will be resolved against the parent. Any directives/interpolations inside the child's template will be compiled in the child's scope. This ensures a cleaner separation between parent and child components.

Advanced transition control parameters for v-component

  • wait-for

    An event name to wait for on the incoming child component before switching it with the current component.
    This allows you to wait for asynchronous data to be loaded before triggering the transition to avoid unwanted flash of emptiness in between.

    Example:

    <div v-component="{{view}}" wait-for="data-loaded"></div>
    // component definition
    {
      compiled: function () {
        var self = this
        $.ajax({
          // ...
          success: function (data) {
            self.$data = data
            self.emit('data-loaded')
          }
        })
      }
    }
  • transition-mode

    By default, the transitions for incoming and outgoing components happen simultaneously.
    This param allows you to configure two other modes:

    • in-out: New component transitions in first, current component transitions out after incoming transition has finished.
    • out-in: Current component transitions out first, new componnent transitions in after outgoing transition has finished.

    Example

    <div v-component="{{view}}"
      v-transition="fade"
      transition-mode="out-in">
    </div>

Exposed additional internals:

Only intended for advanced users who wish to dynamically extend Vue and are familiar with the source code.

  • Key code aliases for the key filter: Now accessible as Vue.filter('key').keyCodes
  • Input type handlers for v-model: Now accessible as Vue.directive('model').handlers
  • Parsers and Compiler: Now accessible as Vue.parsers & Vue.compiler.

Other new features

  • v-style now accept an object of CSS property/value pairs. (suggested in #578, and thanks to @skovhus for the pull request!)

  • New custom directive option: deep.

    When this option is set to true and the directive is bound to an object, it will collect all nested properties of that object as dependencies, so that any nested property change will also trigger the directive's upadte function.

  • When using data option in multiple extension/mixins, the returned values will now be recursively merged. (#594)

    Example:

    var A = Vue.extend({
      data: function () {
        return {
          a: 1
        }
      }
    })
    var B = A.extend({
      data: function () {
        return {
          b: 2
        }
      }
    })
    var b = new B()
    b.$log() // -> { a: 1, b: 2 }
  • The json filter is now bi-directional and can be used on a <textarea> with v-model for two-way binding.

  • trackby for v-repeat is now track-by, for more consistent naming. The trackby usage is still preserved for backwards compatibility.

Bug fixes

Fixed #557, #558, #561, #569, #580, #589, #592.

v0.11.0: Cowboy Bebop

07 Nov 02:30
Compare
Choose a tag to compare

"There are ends we don't desire, but they're inevitable, we have to face them. It's what being human is all about." - Jet Black

0.11.0 is rewritten from the ground up and contains many breaking changes. Please read through the change list before upgrading.

Vuejs.org has been updated to match 0.11.0 API; Docs for 0.10.6 have been moved to legacy.vuejs.org.

Changes since 0.11.0-rc3

  • paramAttributes option now auto strips data- prefixes and uses camelized attribute name as the property name. Docs
  • If there is a leaving transition, the destroyed hook is now called after the transition has finished and the element has been removed from the DOM.
  • JavaScript transition functions now have their this context set to the owner vm.
  • Fixed: #512, #517, #520, #531, #536, #539, #541

0.11.0-rc3

24 Oct 04:25
Compare
Choose a tag to compare
0.11.0-rc3 Pre-release
Pre-release

New

  • New partial compilation implementation. This enables a few new features/changes:
    • dynamic partial: <div v-partial="{{partialId}}"></div> now reacts to change of partialId.
    • new v-if implementation: no longer using an anonymous wrapper instance, should work more intuitively.
    • new instance method: vm.$compile() can dynamically compile a piece of DOM. more details
  • New global config option: Vue.config.async. Defaults to true; if set to false will force Vue to use synchronous view/watcher updates.
  • New instantiation option: watch

Changed

  • Custom directive API change:

    • isFn option for directives is removed.
    • instead there's a new option: acceptStatement.
  • Component directive scope change:

    directives on the root element of a component from the parent's template will be compiled in the parent's scope. For example:

      <div v-component="comp" v-show="ok"></div>

    Here the v-show will be compiled in parent scope, thus it is bound to the ok property on the parent, not the component itself.

    Note that if the directive is part of the component's own template, however, it will be compiled in the component's scope instead.

Fixed

0.11.0-rc2

07 Oct 17:27
Compare
Choose a tag to compare
0.11.0-rc2 Pre-release
Pre-release

API changes

  • $mount() now creates an empty div if no argument is provided.

Internal changes

No longer mutates data objects' __proto__ by default. Vue.config.proto now only affects observed Arrays.

Bug fixes

  • fix v-repeat error when dealing with duplicate primitive values
  • fix #447 computed properties bound to wrong context
  • fix #448 v-attr should remove attribute when value === false
  • fix #450 custom element component unnecessary warning
  • fix $appendTo & $before target in document check
  • fix content transclusion with replace:true + block instance
  • fix #458 dynamic component using meta properties
  • fix #468 dynamic literals with falsy initial value
  • fix #471 merging default data with already observed instance data

0.11.0-rc

27 Sep 01:25
Compare
Choose a tag to compare
0.11.0-rc Pre-release
Pre-release

This is a release candidate for 0.11.0.

Changes

https://github.com/yyx990803/vue/blob/0.11.0-rc/changes.md

Installation