2017-02-01 3 views
1

Экземпляр Vue может позволить вам создавать вложенные модели просмотра. Например, рассмотрим следующийКак создать вложенную область привязки в vue.js?

new Vue({ 
    el: '#app', 
    data: { 
    form: { 
     firstName: "Joe", 
     lastName: "Bloggs" 
    } 
    }, 
    computed: { 
    name: function() { 
     return this.form.firstName + ' ' + this.form.lastName; 
    } 
    } 
}); 

Как вы можете видеть, есть вложенный объект форм-данных: form.firstName и form.lastName. Я могу связать это представление-модель для HTML со следующим:

<div id="app"> 
    <form> 
    <label> 
     First: 
     <input type="text" v-model="form.firstName"> 
    </label> 
    <label> 
     Last: 
     <input type="text" v-model="form.lastName"> 
    </label> 
    </form> 
    <div> 
    You are: {{name}} 
    </div> 
</div> 

Here's a JS Fiddle for this Vue.js example

Теперь мой вопрос: есть ли простой способ (например, директива), чтобы создать вложенный связывающий объем, который позволяет мне для адреса firstName и lastName без предыдущей «формы»?

Knockout.js имеет with binding, который позволяет явно указать область привязки в зависимости от вашей модели представления. Here is a JS Fiddle showing Knockout.js using the with binding

Есть ли простой аналог для нокаута with binding в Vue?

+1

, насколько я знаю, не так. Вы можете обращаться к firstName и lastName только с помощью предшествующей «формы». Кстати, пример в vue выглядит проще, чем при нокауте. –

+0

Как отметил Назгуль Мамашева, вы не можете сделать это точно так. Однако вы всегда можете сделать форму автономным компонентом и передать ему объект данных формы в качестве опоры. – Kano

ответ

0

До тех пор, пока вы не повторили значение, вы могли бы псевдоним его расчетную собственность как

computed: { 
    firstName: function() { 
    return form.firstName 
    }, 
    lastName: function() { 
    return form.lastName 
    } 
} 
Смежные вопросы