【发布时间】:2018-06-06 10:18:13
【问题描述】:
我在使用 Vue 组件的附加 HTML 元素中使用 @click vue 函数时遇到问题。
该组件有两个按钮用于在容器内添加和删除 div,如下:
<div class="col-md-12">
<button class="btn btn-sm btn-warning" @click.prevent.stop="addQuestion()">Add Question</button>
<button class="btn btn-sm btn-danger" @click.prevent.stop="removeQuestion()" v-if="notRemovableQuestion">Remove Question</button>
</div>
addQuestion函数如下:
addQuestion(){
var newQuestion = '<div class="questionBox col-md-12 f-left p-2 mt-2" style="border:2px solid blue;">' +
'<div class="col-md-11 f-left">' +
'<input type="text" class="form-control" name="domanda" placeholder="Question" v-model="domanda" />' +
'<input type="text" class="form-control" name="question_description" placeholder="Question Description" v-model="question_description" />' +
'<div class="form-check">' +
'<div class="newAnswerActions f-left full-width col-md-12 mb-2 mt-2">' +
'<a class="btn btn-sm btn-warning" @click.native="addAnswer()">Add Answer</a>' +
'<a class="btn btn-sm btn-danger" @click.native="removeAnswer()" v-if="notRemovableAnswer">Remove Answer</a>' +
'</div>' +
'<label class="form-check-label">' +
'<input class="form-check-input" type="radio" name="risposte" id="exampleRadios1" value="">' +
'<input type="text" class="form-control" name="answer" placeholder="Risposta" />' +
'</label>' +
'</div>' +
'</div>' +
'<div class="col-md-1 f-left">' +
'<button class="btn btn-sm btn-success" @click.prevent.stop="removeQuestion()">SAVE</button>' +
'</div>' +
'</div>';
$(".allQuestionContainer").append(newQuestion); }
新容器已成功添加,但调用 @click.native="addAnswer()" 和 @click.native="removeAnswer()" 的两个按钮“添加答案”和“删除答案”不起作用。我尝试过使用或不使用本机和其他任何东西,也使用 js onClick 但没有运气,该功能永远无法到达并且点击事件不起作用。
我做错了什么?有什么建议吗?
谢谢!
【问题讨论】:
-
简而言之,您是在 Vue 实例注册自身之后向页面添加内容,因此新添加的道具不是反应性的。我确定这已经在某个地方得到了回答,所以我会四处寻找。
-
忘了说 addQuestion 函数在 export default { methods: { addQuestion(){ // 上面的代码 } }
-
出于兴趣,你为什么要这样混合Vue和JQuery?这可以用纯 vue 完成,这意味着一切都会正确链接..
-
你有一个只使用vue的正确方法的例子吗?我还没有在 vue 中找到类似 append 的东西,所以我混合了,但我很确定这不是最好的方法......
-
我会记下一个答案,其中包含一些关于可以更改以使其正常工作的要点。
标签: javascript vuejs2 vue-component dom-events jquery-events