Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为Vue.js实例应用动态创建的模板?

如何为Vue.js实例应用动态创建的模板?
EN

Stack Overflow用户
提问于 2018-04-25 08:52:43
回答 2查看 256关注 0票数 0

我能够在Vue.js实例中使用静态模板,如下所示。将firstPlaceholder的内容替换为模板staticTemplate的内容,并正确呈现text属性。(可能需要Chrome正常工作。)

但是,如果我动态地创建一个模板,则呈现不起作用。secondPlaceholder失踪了。也许这是时间问题?

=>How我可以修改我的代码来使用dynamicTemplate来呈现secondPlaceholder

代码语言:javascript
运行
AI代码解释
复制
<!doctype html>
<html>

<head>
	   <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
  
    <template id = "staticTemplate">
      <div>{{text}}</div>
    </template> 
  
    <div id ="firstPlaceholder"></div>
  
    <div id ="secondPlaceholder"></div>      
	
	<script>
    
    	var dynamicTemplate = document.createElement('template');
      dynamicTemplate.id = 'dynamicTemplate';
      var div = document.createElement('div');
      div.innerText = '{{text}}';
      dynamicTemplate.appendChild(div);
      
      var staticTemplate = document.getElementById('staticTemplate');
      document.body.insertBefore(dynamicTemplate, staticTemplate);
    
      new Vue({
        el: '#firstPlaceholder',
        template: '#staticTemplate',
        data: {
          text: 'My first text'
        }
      }); 
      
      new Vue({
        el: '#secondPlaceholder',
        template: '#dynamicTemplate',
        data: {
          text: 'My second text'
        }
      });       
     
	</script>
</body>
</html>

有关问题:

如何在vue.js中针对自定义元素(本地web组件)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-25 09:22:52

检查Dom模板

()元素是一种保存客户端内容的机制,在加载页面时不呈现该机制,但随后可以使用JavaScript在运行时进行实例化。

<template>包含一个内容属性,通常我们将通过这个属性读取模板内容。因此,您可以将html添加到内容中。

如果直接appendChild<template>,就可以打印出html,那么就不会发现任何已经添加的内容。

简单地修复:只需将dynamicTemplate.appendChild(childDiv)更改为dynamicTemplate.content.appendChild(childDiv)即可

因为有些浏览器可能不支持<template>,所以您可能不得不使用<div>而不是隐藏它。

PS:我发现了一些文件说attribute=content of <template>是只读的HTMLTemplateElement,可能用div代替template会更好。

你可以试试vue呈现(),这样会更适合你的情况。

代码语言:javascript
运行
AI代码解释
复制
function isSupportTemplate() {
  return 'content' in document.createElement('template')
}

function createVueInstance(supported) {
  if(supported) {//check browser whether support template
    var dynamicTemplate = document.createElement('template');
    dynamicTemplate.id = 'dynamicTemplate';
    var childDiv = document.createElement('div');
    childDiv.innerText = 'support <template>: {{text}}-{{text}}';
    dynamicTemplate.content.appendChild(childDiv); //apend your html to template content
    document.body.appendChild(dynamicTemplate)

    var staticTemplate = document.getElementById('staticTemplate');
    document.body.insertBefore(dynamicTemplate, staticTemplate);
  }
  else {
    var dynamicTemplate = document.createElement('div');
    dynamicTemplate.id = 'dynamicTemplate';
    dynamicTemplate.style.display = 'none'
    var childDiv = document.createElement('div');
    childDiv.innerText = 'not support <template>: {{text}}-{{text}}';
    dynamicTemplate.appendChild(childDiv); //append your html to template content
    document.body.appendChild(dynamicTemplate)

    var staticTemplate = document.getElementById('staticTemplate');
    document.body.insertBefore(dynamicTemplate, staticTemplate);
  }

  new Vue({
    el: '#firstPlaceholder',
    template: '#staticTemplate',
    data: {
      text: 'My first text'
    }
  }); 

  new Vue({
    el: '#secondPlaceholder',
    template: '#dynamicTemplate',
    data: {
      text: 'My second text'
    }
  });
}
代码语言:javascript
运行
AI代码解释
复制
<!doctype html>
<html>

<head>
       <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
  <button onclick="createVueInstance(isSupportTemplate())">Support Template</button>
  <button onclick="createVueInstance(!isSupportTemplate())">Not Support Template</button>
    <template id = "staticTemplate">
      <div>{{text}}</div>
    </template> 
  
    <div id ="firstPlaceholder"></div>
  
    <div id ="secondPlaceholder"></div>      
    
</body>
</html>

票数 0
EN

Stack Overflow用户

发布于 2018-04-25 09:20:04

它在您的示例中并不是可以直接使用的,但是也许您可以使用异步组件获得所需的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50027540

复制
相关文章
如何为Vue.js应用写测试?
依稀记得Vue.js应用推出时,其代码的测试覆盖率就很高也是它的一大卖点,所以大家对Vue.js框架代码的质量就很放心,造就了前端框架三大台柱之一。
前端黑板报
2020/04/10
1.6K0
如何为Vue.js应用写测试?
Django 2.1.7 创建应用模板
上一篇中讲诉了关于Django 2.1.7 视图的操作,本篇章开始研究模块这块内容。
Devops海洋的渔夫
2019/06/11
7590
Django 2.1.7 创建应用模板
以编程方式创建Vue.js组件实例
最近参与了一个Vue.js项目,项目中需要能够以编程方式创建组件。通过编程,意思是使用JavaScript创建和插入组件,而无需在模板中编写任何内容。
前端知否
2020/03/23
8K3
Python中动态创建类实例
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块。如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_m
kongxx
2018/05/14
2.5K0
Vue 3 创建应用实例
本章节主要是对 Vue 应用实例的讲解,我们都知道在 Vue 2.x 是通过 new Vue() 来创建 Vue 应用的,但是在 Vue 3.0 中不是这样的,使用 createApp() 来创建实例的。接下来我们就来好好讲讲 Vue 应用实例。
公众号---人生代码
2020/11/03
4.3K0
Vue 3 创建应用实例
js动态创建div等元素实例
为了节省时间,就直接贴代码了!希望大家多多的关注我! <html> <head> <title>js动态创建div等元素实例</title> <style type="text/css"> </style> </head> <body> <script language="javascript"> var Test={ createDiv:function(){ var div = document.createElement
业余草
2019/01/21
12.5K0
【ERP最新动态】Winshuttle Studio预制模板的应用
使用Winshuttle Studio后,无需编程,只需在常用的办公软件(例如Excel、Access等)中就可以轻松创建、提取以及更新SAP的交易与主数据,从而使复杂的业务流程实现自动化。同时改善数据质量,最大化公司在SAP上的投资回报。
齐天大圣
2022/11/28
7390
【ERP最新动态】Winshuttle Studio预制模板的应用
动态创建函数原理及应用
1、事件计数:在这个场景中,每次事件发生时就在事件处理函数中释放信号量,其他任务获取信号量来处理事件。这种场合计数型信号量初始计数值为0。
用户8671053
2021/10/06
5040
9. Django 2.1.7 创建应用模板
上一篇中讲诉了关于Django 2.1.7 视图的操作,本篇章开始研究模块这块内容。
Devops海洋的渔夫
2022/01/17
4060
9. Django 2.1.7 创建应用模板
vue.js 模板(核心)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript" src='vue.min.js'></script> </head> <body> <input type="button" value="点我" @click="fn"/> {{msg}} <script type="text/javascript"> new Vu
贵哥的编程之路
2021/03/02
2.9K0
vue.js 模板(核心)
Vue.js模板方法
v-html 将 html 的代码输出 <div id="app"> <div v-html="message"></div> </div> <script> new Vue({ el: '#app', data: { message: '<h1>Hello World</h1><img src="https://www.baidu.com/img/bd_logo1.png" />' } }) </script> v-bind 使用 v-bind 指令赋值给 HTML
俞其荣
2018/05/21
3.1K0
Vue.js 模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。
陈不成i
2021/07/27
3.2K0
iOS的动态创建实例方法和实现消息转发
做了几年的iOS开发一直没有写博客,一直怕写的不好误导大家,今儿第一次在腾讯云写点干货
conanma
2021/06/08
6130
.Net中的反射(动态创建类型实例) - Part.4
在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它。可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以做什么。在进行更有趣的话题之前,我们先看下如何动态地创建一个对象。
张子阳
2018/09/30
9520
.Net中的反射(动态创建类型实例) - Part.4
初识vue.js模板语法
  Vue.js使用了基于HTML的模板语法,允许开发者声明式地将呈现的DOM绑定至底层组件实例的数据。所有的Vue.js模板都是有效的HTML,可以被符合规范的浏览器和HTML解析器解析。   在底层,Vue将模板编译为虚拟DOM呈现函数,结合响应式系统,当应用程序状态发生变化时,Vue可以智能地计算出需要重新渲染和应用最小数量DOM操作的组件。
别团等shy哥发育
2023/02/25
2.8K0
深度 | 详解苹果Core ML:如何为iOS创建机器学习应用?
选自developer.apple 机器之心编译 参与:吴攀 在昨天开幕的 WWDC 2017 开发者大会上,苹果宣布了一系列新的面向开发者的机器学习 API,包括面部识别的视觉 API、自然语言处理 API,这些 API 集成了苹果所谓的 Core ML 框架;参阅机器之心报道《苹果开发者大会 WWDC 2017:首次全面展示苹果的人工智能实力》。软件主管兼高级副总裁 Craig Federighi 介绍说,Core ML 的核心是加速在 iPhone、iPad、Apple Watch 上的人工智能任务
机器之心
2018/05/08
1.6K0
深度 | 详解苹果Core ML:如何为iOS创建机器学习应用?
在VScode中配置创建Vue实例对象简单模板
1.进入VScode界面 点击文件->首选项->用户片段 选择新建全局代码片段文件 命名为vue.json
peng_tianyu
2022/12/15
1.3K0
在VScode中配置创建Vue实例对象简单模板
创建bean的实例
本文将详细分析doCreateBean方法中的一个重要的调用,即createBeanInstance方法。先来了解一下方法的大致脉络。
程序员酷森
2020/10/19
1.6K0
vue.js路由实例讲解
vue.js的路由功能由vue-router提供 实现以下功能: 登录和注册两个按钮分别对应login和register路由 实现步骤: 导入vue-router库 <script src="http
章鱼喵
2018/08/02
1.8K0
vue.js路由实例讲解
点击加载更多

相似问题

如何为MAC创建Outlook模板(如.oft或.msg)

24

如何为ziplist创建应用实例?

21

如何为模板创建动态LI和DIV

21

如何为从GCE实例模板创建的实例生成有效的证书?

10

vue.js Uri动态模板

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档