在 Ractive.js 中删除第一项点击
Remove the first item on click in Ractive.js
我有一个包含 4 个项目的列表,每次单击按钮时我都需要删除第一个项目。我基于 splice 方法实现了一个简单的解决方案,但它似乎只在第一次点击时起作用。任何进一步的点击都不会改变任何事情。
这里是 html:
<script type="text/ractive" id="template1">
{{#each Posts}}
<div style="background-color: red">{{Text}}</div>
{{/each}}
<button on-click="removeFirst">Remove first</button>
</script>
<main></main>
, javascript:
var ractive1 = new Ractive({
template: '#template1',
el: 'main',
data: {
Posts: [ {Text: "Post 1"}, {Text: "Post 2"}, {Text: "Post 3"}, {Text: "Post 4"} ],
}
});
ractive1.on({
removeFirst: function() {
ractive1.splice('Posts', 0, 1, []);
}
});
当您在数组上调用 splice
时,第一个参数是从其开始删除元素的索引,第二个参数是要删除的元素数,所有其余参数 是要在同一位置插入数组的项目。所以当你调用 array.splice(0, 1, [])
时你实际上在做的是用一个空数组替换第一个项目,而不是仅仅删除它。
Ractive 的数组变异方法遵循相同的形式,只是第一个参数是数组的 'keypath'。所以如果你这样做...
ractive1.splice('Posts', 0, 1);
我有一个包含 4 个项目的列表,每次单击按钮时我都需要删除第一个项目。我基于 splice 方法实现了一个简单的解决方案,但它似乎只在第一次点击时起作用。任何进一步的点击都不会改变任何事情。
这里是 html:
<script type="text/ractive" id="template1">
{{#each Posts}}
<div style="background-color: red">{{Text}}</div>
{{/each}}
<button on-click="removeFirst">Remove first</button>
</script>
<main></main>
, javascript:
var ractive1 = new Ractive({
template: '#template1',
el: 'main',
data: {
Posts: [ {Text: "Post 1"}, {Text: "Post 2"}, {Text: "Post 3"}, {Text: "Post 4"} ],
}
});
ractive1.on({
removeFirst: function() {
ractive1.splice('Posts', 0, 1, []);
}
});
当您在数组上调用 splice
时,第一个参数是从其开始删除元素的索引,第二个参数是要删除的元素数,所有其余参数 是要在同一位置插入数组的项目。所以当你调用 array.splice(0, 1, [])
时你实际上在做的是用一个空数组替换第一个项目,而不是仅仅删除它。
Ractive 的数组变异方法遵循相同的形式,只是第一个参数是数组的 'keypath'。所以如果你这样做...
ractive1.splice('Posts', 0, 1);