带有innerhtml的Vuejs

Posted

技术标签:

【中文标题】带有innerhtml的Vuejs【英文标题】:Vuejs with innerhtml 【发布时间】:2022-01-13 07:06:51 【问题描述】:

有一个过滤页面。

|过滤器 | |内容 |

过滤器在视图中,最初显示的内容是 Ruby。如果选择了过滤器,则应删除(隐藏)Ruby 模板,并滚动来自 api 的内容(通过 axios 获取)。

试过这样:

 document.querySelector('.shop-content__grid').innerhtml = `
  <div @click='this.testBtn'>Test</div>
 `;

是的,它会删除内部内容,但不会作为视图读取。有合法的方法可以做到这一点吗?或者有没有其他方法可以解决这个问题?

【问题讨论】:

你可能需要花一些时间阅读 VueJS 2。如果整个东西是一个 Vue 应用程序,你永远不会使用文档选择器。如果您仅将 Vue 用于常规 HTML 页面中的一个或两个组件,那么您可能必须将 Vue 组件“渲染”到相应的 Div 中。 @Teddy then you may have to "render" the Vue component into the respective Div. 是什么意思?是的,我在 HTML 中将 vue 用于 1-2 组件。 【参考方案1】:

如果它是一个成熟的 Vue 应用程序,那么你的想法是错误的。您甚至很少在 Vue 应用程序中使用文档选择器。

如果它只是一个使用一两个简单 Vue 组件的 HTML 页面,那么您可能必须提供元素选择器并提供数据来定义 Vue 组件并将其渲染到现有的 HTML 元素中。

例如:

<html>
   <head>
      <title>VueJs Instance</title>
      <script type = "text/javascript" src = "js/vue.js"></script>
   </head>
   <body>
      <div id = "vue_det">
         <h1>Firstname : firstname</h1>
         <h1>Lastname : lastname</h1>
         <h1>mydetails()</h1>
      </div>
      <script type = "text/javascript" src = "js/vue_instance.js"></script>
   </body>
</html>

vue_instance.js

var  vm = new Vue(
   el: '#vue_det',
   data: 
      firstname : "Ria",
      lastname  : "Singh",
      address    : "Mumbai"
   ,
   methods: 
      mydetails : function() 
         return "I am "+this.firstname +" "+ this.lastname;
      
   
)

参考: https://vuejs.org/v2/guide/#What-is-Vue-js

还有这个教程: https://www.tutorialspoint.com/vuejs/vuejs_instances.htm

在上面的示例中,您在组件定义本身中提供目标元素、数据和方法。

如果数据发生变化,您可能需要重新创建组件。

与此不同的是,如果组件侦听事件总线,则无需再次渲染组件 - 您可以将数据从外部传递(或发出)到组件,然后它会重新渲染自己。

这是一个简单的事件总线示例: https://andrejsabrickis.medium.com/https-medium-com-andrejsabrickis-create-simple-eventbus-to-communicate-between-vue-js-components-cdc11cd59860

【讨论】:

以上是关于带有innerhtml的Vuejs的主要内容,如果未能解决你的问题,请参考以下文章

在带有 innerHTML 的 Javascript 中使用引号

带有变量 angular2 的 innerHTML

Angular - 带有样式的 InnerHtml

在不使用函数的情况下显示带有 innerHTML 的对象?

一个带有 2 个输出的 ajax 循环错误 innerHTML

带有innerHtml循环的Javascript幻灯片不起作用