Sha256: 43c167330d584d5e454144ecbded46cffdcb1c2aab2381512525268d27373c82
Contents?: true
Size: 1.88 KB
Versions: 6
Compression:
Stored size: 1.88 KB
Contents
var _ = require('../util') var templateParser = require('../parsers/template') var textParser = require('../parsers/text') var compiler = require('../compiler') var Cache = require('../cache') var cache = new Cache(1000) // v-partial reuses logic from v-if var vIf = require('../directives/if') module.exports = { link: vIf.link, teardown: vIf.teardown, getContainedComponents: vIf.getContainedComponents, bind: function () { var el = this.el this.start = _.createAnchor('v-partial-start') this.end = _.createAnchor('v-partial-end') _.replace(el, this.end) _.before(this.start, this.end) var id = el.getAttribute('name') var tokens = textParser.parse(id) if (tokens) { // dynamic partial this.setupDynamic(tokens) } else { // static partial this.insert(id) } }, setupDynamic: function (tokens) { var self = this var exp = textParser.tokensToExp(tokens) this.unwatch = this.vm.$watch(exp, function (value) { self.teardown() self.insert(value) }, { immediate: true, user: false }) }, insert: function (id) { var partial = _.resolveAsset(this.vm.$options, 'partials', id) if (process.env.NODE_ENV !== 'production') { _.assertAsset(partial, 'partial', id) } if (partial) { var frag = templateParser.parse(partial, true) // cache partials based on constructor id. var cacheId = (this.vm.constructor.cid || '') + partial var linker = this.compile(frag, cacheId) // this is provided by v-if this.link(frag, linker) } }, compile: function (frag, cacheId) { var hit = cache.get(cacheId) if (hit) return hit var linker = compiler.compile(frag, this.vm.$options, true) cache.put(cacheId, linker) return linker }, unbind: function () { if (this.unlink) this.unlink() if (this.unwatch) this.unwatch() } }
Version data entries
6 entries across 6 versions & 2 rubygems