我希望對某人來說這是一個微不足道的問題,我只是想念一小段代碼:我從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