laravel - VueJS - 方法内的动态函数名称
问题描述
我有一个列表和导航,它根据数据行数生成 12 个项目/页。
我的导航按钮触发 vue-js v-on:click 事件
我也在尝试动态生成 JS 文件中的函数方法,但似乎无法在方法部分中放入循环语句。不断收到语法错误。
vueJS 方法部分中是否有特定的 JS 语法?
methods: {
for (x = 0; x < 2; x++){
featuredStores.'x' = function(){
for (y = 0; y < 2; y++)
this.storeFeatNav.'y' = !this.storeFeatNav.'y'
}}
如果有帮助,我也在使用 Laravel 框架。
谢谢
解决方案
很明显,您想要动态添加方法,但不清楚您在动态方法附件代码中做了什么。因此,我将向您展示一种动态添加方法的方法,例如:
var methods = {
greet() {
console.log(this.message + ' from greet method.');
}
};
for (let x = 0; x < 2; x++) {
methods['featuredStores'+x] = function() {
console.log(this.message + ' from featuredStores'+x+' method.');
}
}
请注意,methods['featuredStores'+x]
实际上是通过在循环内将 的值x
与字符串连接起来来创建方法名称,featuredStores
所以第一次的值x
是0
产生featuredStores0
的,第二次的值x
是1
产生的featuredStores0
,最后你有三个方法,它们是:
greet // hard coded
featuredStores0 // added dynamically within the loop
featuredStores1 // added dynamically within the loop
现在,您只需methods
在创建实例时将对象添加为新实例的属性Vue
,例如:
var demo = new Vue({
el: '#demo',
methods: methods, // or just methods
data:{
message: "Hello World"
}
});
要查看它的实际效果,请运行以下代码片段(希望这会给您一些想法):
var methods = {
greet() {
console.log(this.message + ' from greet method.');
}
};
for (let x = 0; x < 2; x++) {
methods['featuredStores'+x] = function() {
console.log(this.message + ' from featuredStores'+x+' method.');
}
}
var demo = new Vue({
el: '#demo',
methods,
data:{
message: "Hello World"
},
created() {
this.greet();
this.featuredStores0();
this.featuredStores1();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.8.6/vue.min.js"></script>
<div id="demo">
{{message}}
</div>
推荐阅读
- python - 模拟方法中给出的路径 - Python
- prometheus - Prometheus:PromQL - 为指标添加标签
- android - 单击一次后,我想禁用其他底部
- sql - 如何加入这 3 个表,进行总和计算并按多个值分组?
- sql - 通过 Rails 中的缺失记录过滤关联
- html - 从角度8的导航栏中选择一个选项后,如何使侧面导航保持不变并且内容单独消失?
- php - 如何使用 ORY Hydra PHP SDK 修补 OAuth2 客户端
- typescript - 有没有办法使用 tsc 命令(或其他)显示可视代码(tsserver)建议,如 TS80007?
- go - 在一个选择案例中从一个通道读取并写入另一个通道
- c# - 表达式树创建用于生成 ac# 字典的 lambda