|
@@ -277,7 +277,7 @@ module.exports = {
|
|
|
meta.$value = raw
|
|
meta.$value = raw
|
|
|
}
|
|
}
|
|
|
// resolve constructor
|
|
// resolve constructor
|
|
|
- var Ctor = this.Ctor || this.resolveCtor(data)
|
|
|
|
|
|
|
+ var Ctor = this.Ctor || this.resolveCtor(data, meta)
|
|
|
var vm = this.vm.$addChild({
|
|
var vm = this.vm.$addChild({
|
|
|
el: this.template.cloneNode(true),
|
|
el: this.template.cloneNode(true),
|
|
|
_linker: this._linker,
|
|
_linker: this._linker,
|
|
@@ -296,16 +296,22 @@ module.exports = {
|
|
|
* components depending on instance data.
|
|
* components depending on instance data.
|
|
|
*
|
|
*
|
|
|
* @param {Object} data
|
|
* @param {Object} data
|
|
|
|
|
+ * @param {Object} meta
|
|
|
* @return {Function}
|
|
* @return {Function}
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
- resolveCtor: function (data) {
|
|
|
|
|
|
|
+ resolveCtor: function (data, meta) {
|
|
|
|
|
+ // create a temporary context object and copy data
|
|
|
|
|
+ // and meta properties onto it.
|
|
|
|
|
+ // use _.define to avoid accidentally overwriting scope
|
|
|
|
|
+ // properties.
|
|
|
var context = Object.create(this.vm)
|
|
var context = Object.create(this.vm)
|
|
|
for (var key in data) {
|
|
for (var key in data) {
|
|
|
- // use _.define to avoid accidentally
|
|
|
|
|
- // overwriting scope properties
|
|
|
|
|
_.define(context, key, data[key])
|
|
_.define(context, key, data[key])
|
|
|
}
|
|
}
|
|
|
|
|
+ for (var key in meta) {
|
|
|
|
|
+ _.define(context, key, meta[key])
|
|
|
|
|
+ }
|
|
|
var id = this.ctorGetter.call(context, context)
|
|
var id = this.ctorGetter.call(context, context)
|
|
|
var Ctor = this.vm.$options.components[id]
|
|
var Ctor = this.vm.$options.components[id]
|
|
|
_.assertAsset(Ctor, 'component', id)
|
|
_.assertAsset(Ctor, 'component', id)
|