Sha256: fc4da07afdcef8759aacac7ba5261d4f58a8ab32a6bb9a15fc57463defa68f57
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
// NOTE: the prop internal directive is compiled and linked // during _initScope(), before the created hook is called. // The purpose is to make the initial prop values available // inside `created` hooks and `data` functions. var _ = require('../util') var Watcher = require('../watcher') var bindingModes = require('../config')._propBindingModes module.exports = { bind: function () { var child = this.vm var parent = child._context // passed in from compiler directly var prop = this._descriptor var childKey = prop.path var parentKey = prop.parentPath this.parentWatcher = new Watcher( parent, parentKey, function (val) { if (_.assertProp(prop, val)) { child[childKey] = val } }, { sync: true } ) // set the child initial value. var value = this.parentWatcher.value if (childKey === '$data') { child._data = value } else { _.initProp(child, prop, value) } // setup two-way binding if (prop.mode === bindingModes.TWO_WAY) { // important: defer the child watcher creation until // the created hook (after data observation) var self = this child.$once('hook:created', function () { self.childWatcher = new Watcher( child, childKey, function (val) { parent.$set(parentKey, val) }, { sync: true } ) }) } }, unbind: function () { this.parentWatcher.teardown() if (this.childWatcher) { this.childWatcher.teardown() } } }
Version data entries
3 entries across 3 versions & 1 rubygems