使用 Vue JS 从计算属性中获取 select 选项
Getting select options from computed properties with Vue JS
我正在尝试使用计算 属性.select 从中获取一个 select 来与 Vue 一起工作
这是我正在使用的 fiddle:https://jsfiddle.net/2m18ab1v/13/
这是我的视图模型的样子:
var vm = new Vue({
el: "#app-container",
data: {
offer: {
unit: '',
tags: '',
},
protocol: protocol
},
computed: {
getUnits: function(){
var unitsList = [];
var tagList = this.offer.tags.split(",");
console.log(tagList);
for (var i=0; i<tagList.length; i++){
unitsList += this.protocol[tagList[i]]["units"];
}
console.log(unitsList);
return unitsList;
}
}
});
以及数据中引用的'protocol'对象:
var protocol = {"wireless":
{
"units": {"bandwidth": "bit/s", "distance": "kilometers"},
"children": [],
}
我想 <select>
选择 "bit/s" 和 "kilometers"。我一直在我的模板中尝试这样的事情:
<div id="app-container">
<select v-model="offer.unit">
<option v-for="item in getUnits" v-bind:value="value">
{{ item }}
</option>
</select>
</div>
console.log(unitsList)
returns Object { bandwidth: Getter, distance: Getter, 1 more… }
很显然,我想要得到的是某种对象。我对 Vue 有点陌生,我想弄清楚 "Getter" 是如何工作的。有没有直接的方法获取它的值?
当你试图收集单位时,在 js 中使用 +=
不会得到你想要的结果。在这个 working fiddle 中,我使用 concat
代替,将 wireless
下的 units
与其他人连接起来。 (假设你在与wireless
相同的数据树级别上有其他协议类别)根据你的实际需要,你可能需要push
。看看他们的文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
我正在尝试使用计算 属性.select 从中获取一个 select 来与 Vue 一起工作
这是我正在使用的 fiddle:https://jsfiddle.net/2m18ab1v/13/
这是我的视图模型的样子:
var vm = new Vue({
el: "#app-container",
data: {
offer: {
unit: '',
tags: '',
},
protocol: protocol
},
computed: {
getUnits: function(){
var unitsList = [];
var tagList = this.offer.tags.split(",");
console.log(tagList);
for (var i=0; i<tagList.length; i++){
unitsList += this.protocol[tagList[i]]["units"];
}
console.log(unitsList);
return unitsList;
}
}
});
以及数据中引用的'protocol'对象:
var protocol = {"wireless":
{
"units": {"bandwidth": "bit/s", "distance": "kilometers"},
"children": [],
}
我想 <select>
选择 "bit/s" 和 "kilometers"。我一直在我的模板中尝试这样的事情:
<div id="app-container">
<select v-model="offer.unit">
<option v-for="item in getUnits" v-bind:value="value">
{{ item }}
</option>
</select>
</div>
console.log(unitsList)
returns Object { bandwidth: Getter, distance: Getter, 1 more… }
很显然,我想要得到的是某种对象。我对 Vue 有点陌生,我想弄清楚 "Getter" 是如何工作的。有没有直接的方法获取它的值?
当你试图收集单位时,在 js 中使用 +=
不会得到你想要的结果。在这个 working fiddle 中,我使用 concat
代替,将 wireless
下的 units
与其他人连接起来。 (假设你在与wireless
相同的数据树级别上有其他协议类别)根据你的实际需要,你可能需要push
。看看他们的文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push