Javascript 如何使用指定的键获取值?
有一个使用Javascript 如何使用指定的键获取值?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,有一个使用$从JSON源代码创建的数组。每个方法。这是控制台所说的: $vm0.sailNames; [Array(24), __ob__: Observer] (出于某种原因,jQuery创建了一个观察者) 在Vue.js dev视图中,它看起来是这样的: 如何将displayName值作为参数传递给name?是否有任何Vue.js阵列方法可以做到这一点 --编辑:添加一些标记: data() { return { (...) sailNames: [],
$从JSON源代码创建的数组。每个方法。这是控制台所说的:
$vm0.sailNames;
[Array(24), __ob__: Observer]
(出于某种原因,jQuery创建了一个观察者)
在Vue.js dev视图中,它看起来是这样的:
如何将displayName
值作为参数传递给name
?是否有任何Vue.js阵列方法可以做到这一点
--编辑:添加一些标记:
data() {
return {
(...)
sailNames: [],
(...)
}
},
methods: {
someMethod(name) {
console.log("sailNames: ", this.sailNames);
let item = this.sailNames.find(s => s.name == name);
console.log("name (someMethod's arg.): ", name);
console.log("item: ", item);
},
showName: function(e) { // this is the function triggered @click
(...)
const sourceElement = e.target.id;
this.someMethod(sourceElement);
(...)
},
(...)
DOM元素上的控制台输出单击:
sailNames: [Array(24), __ob__: Observer]
name (someMethod's arg.): grot
item: undefined`
模板中的DOM元素:
<svg>
(...)
<g id="sailShapes">
<path class="rope" d="M 15,589 395,94" />
<path id="latacz" d="M 160,404 255,391 390,104 z" class="sail" @click="showName" />
<path class="rope" d="M 30,592 395,179" />
<path id="grot" d="M 100,519 285,490 330,254 z" class="sail" @click="showName" />
(...)
</g>
(...)
</svg>
(...)
(...)
(...)
这将为您提供对象
methods:{
someMethod(name){
let item= this.sailNames.find(s => s.name == name)
if (!item)
//error
// use item.displayName in code
}
}
但是,通常,如果在模板中渲染sailNames
,则可以将整个对象传递给方法
<ul>
<li v-for="item in sailNames" @click="someMethod(item)">{{item.name}}</li>
</ul>
编辑
对于未来的读者,在填充sailNames
的过程中有一个小错误,导致上述方法无法工作。解决了这个问题,一切都变了。jQuery没有创建观察者,Vue将数据转换为观察值。只需使用普通javascript即可。你想在哪里使用它?用什么方法?模板“sailNames”在数据中定义,然后由jQuery的$.each方法更新。填充完数组后,我试图在一个方法中使用它的值,这个方法是通过点击DOM元素触发的。someMethod()的主体中有console.logs以正确的形状显示sailNames数组,而且“name”参数读取正确,但“item”变量最终仍然未定义。我选择了第一个选项,模板中没有v-for。@a如果您共享代码,我可以查看。在问题正文中添加了一些代码,请查看。@a如果您添加了使用sailNames
的模板,可以吗?触发元素是SVG形状,上面添加的示例。如果足够,请告诉我。
someMethod(item){
//use item.displayName
}