2017-06-22 59 views
0

請看看例子爲什麼Vue綁定在樣本中不起作用?

http://jsfiddle.net/g77uv054/

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.10.5/vue.min.js"></script> 
 
<div id="todo"> 
 
    <h1>My Test</h1> 
 
    Sample 1 <span v-text="form.title"></span> 
 
    Sample 2 <b><span v-text="'' +form.title"></span></b> 
 
</div> 
 

 

 
<script> 
 
var form = new Vue({ 
 
    data: { 
 
     title: "My Form" 
 
    } 
 
}); 
 

 
var app = new Vue({ 
 
    el: '#todo', 
 
    data: { 
 
     form : form 
 
    } 
 
}) 
 
</script>

出於某種原因,在 「樣品1」 結合並沒有顯示什麼和樣品2個工作正常。有人可以解釋爲什麼向字符串添加''會有什麼區別嗎?

+0

你爲什麼在你的例子中使用古老的Vue版本?如果您使用現代版本,則您的代碼有效。 – Bert

回答

1

我不相信你可以在另一個vue實例中使用vue實例。 通常,您可以將表單定義爲組件或類。 我附對於這兩種方法小提琴:

http://jsfiddle.net/DarkFruits/g77uv054/1/

<div id="todo"> 
    <h1>My Test</h1> 
    Sample 1<span v-text="form.title"></span><br/> 
    Sample 2<span v-text="'' +form.title"></span> 
</div> 

class form { 
    constructor() { 
    this.title = 'My Form' 
    } 
} 

var app = new Vue({ 
    el: '#todo', 
    data: { 
    form : new form() 
    } 
}) 

http://jsfiddle.net/DarkFruits/g77uv054/2/

<template id="my-form"> 
    <span v-text='title'></span> 
</template> 

<div id="todo"> 
    <h1>My Test</h1> 
    Sample 1<my-form v-bind:title='title'></my-form><br/> 
</div> 

Vue.component('my-form', { 
    template: '#my-form', 
    props: ['title'] 
}) 

var app = new Vue({ 
    el: '#todo', 
    data: { 
     title : 'My Form' 
    } 
}) 

編輯: 僅供參考,在第二小提琴我除去VUE作爲外部資源,並在加入它javascript設置。這也給了你更好的控制檯錯誤信息。

+0

謝謝你的答案,但如果我用類來定義的形式,而不是使用Vue的話,我不能使用計算字段和其他的Vue這裏設有英寸 是否有任何其他方式從模板分離ViewModel? 我想有模板和的ViewModels,所以我可以測試視圖模型邏輯分離類,而不必實例模板,DOM等... –

+0

如果你想從應用程序中解耦的形式,但仍然使用Vue有,你可以走組件路(第二小提琴)。我不知道有任何其他方法。但是我對vue也很陌生,所以也許別人知道一個。你也可以問[vue gitter](https://gitter.im/vuejs/vue) –