gpt4 book ai didi

javascript - 如何在 Vue.js 中指定绑定(bind)上下文,就像在 Knockout.js 和 WPF 中一样

转载 作者:行者123 更新时间:2023-12-03 03:09:24 25 4
gpt4 key购买 nike

我们正在使用Vue.js ,如果你问我的话,非常好的框架。来自 Knockout.jsWPF我知道可以为绑定(bind)指定上下文。如何使用 Vue.js 来完成此操作?

请参阅下面的示例。这里 binding-context 是我在 Vue 中寻找的功能的伪代码。

Vue.component('hosting-setup', {
template:
'<wizard>' +
'<wizard-step binding-context="step1" :title="title">' +
'<select :options="choices"></select>' +
'</wizard-step>' +
'<wizard-step binding-context="step2" :title="title">' +
'<select :options="choices"></select>' +
'</wizard-step>' +
'</wizard>',

data: function () {
return {
step1: {
title: 'Choose virtualization software',
choices: ['Virtual Box', 'VMWare'],
choice: undefined,
},
step2: {
title: 'Choose guest operating system',
choices: ['Debian 6', 'Ubuntu 16', 'Windows Server 2012'],
choice: undefined
}
};
}
});

最佳答案

Vue 中没有等效的“with”绑定(bind)。有几种方法可以实现您想要执行的操作,但对于您的示例,我将使用计算将数据作为数组返回,然后使用v-for打印每个组件将相关数据作为 prop 传递:

Vue 实例

Vue.component('wizard-step', {
template: `<div>{{title}}</div>`,
props: ['title']
});

new Vue({
el: '#app',
computed: {
wizardSteps() {
return [this.step1, this.Step2]
}
},
data() {
return {
step1: {
title: 'Choose virtualization software',
choices: ['Virtual Box', 'VMWare'],
choice: undefined,
},
Step2: {
title: 'Choose guest operating system',
choices: ['Debian 6', 'Ubuntu 16', 'Windows Server 2012'],
choice: undefined
}
};
}
})

标记

  <wizard-step :title="step.title" v-for="(step, index) in wizardSteps" :key="index"></wizard-step>

这是 JSFiddle:http://jsfiddle.net/craig_h_411/vzq25go5/

编辑

如果你想直接将数据向下传递给组件,可以使用v-bind来传递对象,并将你想要在组件中使用的对象属性名称声明为 props,这可能更接近你所要求的,所以:

Vue.component('wizard-step', {
template: `<div>
{{title}}
<select>
<option v-for="choice in choices" >{{choice}}</option>
</select>
</div>`,
props: ['title','choices']
});

父标记

  <wizard-step v-bind="step1"></wizard-step>
<wizard-step v-bind="Step2"></wizard-step>

这是 JSFiddle:http://jsfiddle.net/craig_h_411/7dg41j0w/

关于javascript - 如何在 Vue.js 中指定绑定(bind)上下文,就像在 Knockout.js 和 WPF 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com