最近我想在vue组件中将stirng转换为Dom,但它并不像我期望的那样工作。我的代码如下所示:
// what I wrote in the template
<div id="log">
{{libText}}
</div>
// what I wrote in js
Vue.component(... , {
template: ... ,
data: function () {
return ...
}
},
computed: {
libText:function(){
var str="<p>some html</p>";
var div = document.createElement('div');
div.innerHTML = str;
return div;
}
},
methods:{...}
})
我得到的结果是字符串“[object HTMLDivElement]”而不是Dom。 如果有人能帮助我解决这个问题,那将是非常好的
答案 0 :(得分:12)
答案 1 :(得分:4)
可能的解决方案是:
模板:
<div id="log">
{{{libText}}}
</div>
注意获得原始html /文本解释的triple {}。
使用Javascript:
Vue.component(... , {
template: ... ,
data: function () {
return ...
}
},
computed: {
libText:function(){
// return directly html
var str="<div><p>some html</p></div>";
return str;
}
},
methods:{...}
});
答案 2 :(得分:-2)
你想要做的事情没有任何意义。这不是胡须的工作方式。他们只输出字符串。难怪你的输出是一个字符串。
如果要创建新组件,则需要构造函数 AND DOM元素,具体如下。
DOM el + VueComponent constructor = Vue Component
您应该在一些钩子(Vue.extend
)中构造构造函数,例如创建的钩子。然后像你一样创建元素。然后做一些事情:
var myComponent = new myConstructor({el: myElement})
瞧瞧&#39;你已经完成了!