Sha256: 9ac09776e153a07cf6b7dd3afca1e77fe7b35ac95f94b14181ee0a19b953f749
Contents?: true
Size: 1.51 KB
Versions: 3
Compression:
Stored size: 1.51 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 } } ) // 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) } ) }) } }, unbind: function () { this.parentWatcher.teardown() if (this.childWatcher) { this.childWatcher.teardown() } } }
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
plate-lang-0.1.2 | skeleton/vendor/vue/src/directives/prop.js |
plate-lang-0.1.1 | skeleton/vendor/vue/src/directives/prop.js |
plate-lang-0.1.0 | skeleton/vendor/vue/src/directives/prop.js |