0
我有以下最低例子:Vue.js - 模型和呈现的内容之间的不一致
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<ol>
<li v-for="series in currentSeries" v-bind:data-id="series.id">
The ID is <% series.id %>
<a href="javascript:;" class="removeSeries">X</a>
</li>
</ol>
</div>
</body>
<script>
vm = new Vue({
el: '#app',
delimiters: ["<%", "%>"],
data: {
currentSeries: [{id: "1"}, {id: "2"}, {id: "3"}]
},
methods: {
removeSeries: function(id) {
this.currentSeries = this.currentSeries.filter(function(element) {
return element.id != id;
});
}
}
});
$(function() {
$(document).on("click", ".removeSeries", function() {
var id = $(this).parent().data("id");
console.log(id);
vm.removeSeries(id);
});
});
</script>
</html>
我有一系列的变量currentSeries列表。我创建了这些列表,并为每个项目添加一个-tag以将其从列表中删除。
如果我点击第一个'X',第一个元素将从列表中移除,ID 1将显示在控制台中。然后,如果再次点击第一个元素,它应该删除第二个元素(现在是第一个元素)。 HOwever,输出id仍然是1,即数据id在渲染期间没有更新节点。 这里有什么问题,以及如何改进?
感谢您的解决方法!我知道,我混合jQuery和Vue可能不是最佳。但是,有没有明显的原因,为什么它不像我在原来的文章中那样工作?这很好理解,这样同样的错误不会再次发生(一旦可能需要联合使用这两种技术)。 –
很难,为什么这不起作用,有趣的是它的工作原理是你只是使用'id',然后用'attr'得到它,但在'jQuery'中使用'data'时发生了一些事情,所以我猜这个问题是与jQuery如何实现该功能有关。这是'attr'和'id'的小提琴:https://jsfiddle.net/5dpy5gfL/ –