我希望对某人来说这是一个微不足道的问题,我只是想念一小段代码:我从knockout.js
迁移到vue.js
,我想知道是否有简单在vue.js
中以与knockout.js
中相同的方式使用模板。剪断下面的代码使用knockout.js
和按预期工作:使用模板清晰分离视图和代码使用Vue
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。
@NumLock所以,我有几个想法,并在接受答案后添加它们。只是FYI。 – Bert
谢谢。我非常感谢所有的努力。我目前正试图掌握在模板内直接引用'person'而不仅仅是其属性的含义。用我的KO例子,我可以重新使用这个模板来创建基本上具有这两个属性的所有东西。至少现在(根据我目前的理解),我只卸载了如何渲染人物而不是定义(可重复使用的)模板 –
@NumLock您总是可以定义一个只渲染人物的人物组件。 – Bert