我正在构建一个Vue组件,我想通过修改innerHTML时调用Vue methods中定义的函数来调用onClick属性。 然而,它给我报错,如下所示:"showModal未定义"
这是我的showModal函数,我只是尝试打印一些数据以确保函数被调用:
methods: {
showModal: function() {
console.log("function is called")
//this.$refs.myModalRef.show();
//this.account=account;
}
}
这里我正在尝试通过onclick函数调用js中的该函数:
var inputText = document.getElementById("fileContents");
var innerHTML = inputText.innerHTML;
for(var i=0;i<this.violations.length;i++){
var index=innerHTML.indexOf(this.violations[i]);
if(index>0) {
innerHTML = innerHTML.substring(0, index) +"<a href='#' onclick='showModal'>"+ "<span style=\"background-color: yellow\">" + innerHTML.substring(index, index + this.violations[i].length) + "</span>" + "</a>" + innerHTML.substring(index + this.violations[i].length);
inputText.innerHTML = innerHTML;
}
}
错误:(索引):1未捕获的引用错误:showModal未定义 在HTMLAnchorElement.onclick ((index):1)
我是不是以错误的方式调用它了?
谢谢!
编辑:
感谢@Ferrybig-我知道我可以调用该函数,但我还有另一个问题; 我想像这样将我正在更改其html的当前单词传递给函数: onclick ='myMethod(violations[i])'我尝试将此.violations数组设置为全局,例如:
window.violations=this.violations;
但是,(变量i)是数组中当前单词的索引,它不是全局变量可以传递给'myMethod'函数,并且会显示(i未定义)。我无法将i设置为全局变量,因为它是在循环中每次递增的索引。 我考虑将我正在编辑的标记的当前索引发送到函数'myMethod'中,以便我可以跟踪我所在的标记及其由vue组件中的html知道,但不确定如何实现..
有其他建议吗?
onclick
事件的链接可能不会被Vue解释,并且onclick
事件将不会触发。尝试使用vue.js
向您的页面添加链接:<div v-for="v in violations"><a @click="showModal">text</a></div>
。 - ebbishop