【发布时间】:2017-11-01 10:42:38
【问题描述】:
我希望这对某人来说是一个微不足道的问题,我只是错过了一小段神奇的代码:我正在从 knockout.js 迁移到 vue.js,我想知道是否有一种简单的方法来使用相同的模板vue.js 和 knockout.js 一样。以下代码片段使用knockout.js 并按预期工作:
function viewmodel() {
this.person = ko.observable(new person());
}
function person() {
this.first = ko.observable('hello');
this.last = ko.observable('world');
}
ko.applyBindings(new viewmodel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/html" id="person-template">
<p data-bind="text: first"/>
<p data-bind="text: last"/>
</script>
<div>
<div data-bind="template: { name: 'person-template', data: person }"/>
</div>
但是,我不知道如何在vue.js 中实现相同的目标。我知道vue.js 中的组件以及所有这些,但我想保持结构不变,而不是将更多特定于视图的代码放入我的 JavaScript 文件中。 (我已经对el: '#app' 不满意,但这是我目前最不关心的问题)当然这段代码不起作用:
var app = new Vue({
el: '#app',
data: {
person: {
first: 'hello',
last: 'world'
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.js"></script>
<script type="text/x-template" id="person-template">
<p v-text="first"/>
<p v-text="last"/>
</script>
<div id="app">
<div><!-- how? is this even possible? --></div>
</div>
有没有办法只通过更改代码的 HTML 部分来实现此功能?最好只有 <div>-Element。
【问题讨论】:
标签: javascript mvvm knockout.js vue.js