防止反应性从模板中删除数据
Prevent reactivity from removing data from template
我有一个模板来管理集合中的重要属性。这是一个由该属性过滤的简单列表,带有允许更改其值的切换:
<template name="list">
{{#each items}}
<div class="box" data-id="{{_id}}">
{{name}}
<span class="toggle">Toggle</span>
</div>
{{/each}}
</template>
Template.list.items = function() {
return Items.find({property: true}, {sort: {name: 1}});
};
Template.list.events({
'click .toggle': function(e) {
var item = Items.findOne( $(e.target).closest('.box').data('id') );
Items.update(item._id, {$set: {
property: !item.property;
}});
},
});
很简单。现在,很明显,当我单击项目的切换时,这个项目属性会变为false,并从列表中删除。但是,为了便于撤消,我希望该项目保留在列表中。理想情况下,直到用户离开页面,但可以接受延迟的淡出。
我不想完全阻止反应性,新项目应该出现在列表中,如果名称更改,应该更新。我只想让删除的项目保留一段时间。
有没有一种简单的方法可以实现这一点?
我会将删除的项存储在一个新的数组中,并执行如下操作:
var removed = []; // Contains removed items.
Template.list.created = function() {
// Make it empty in the beginning (if the template is used many times sequentially).
removed = []
};
Template.list.items = function() {
// Get items from the collection.
var items = Items.find({property: true}).fetch();
// Add the removed items to it.
items = items.concat(removed)
// Do the sorting.
items.sort(function(a, b){ return a.name < b.name}) // May be wrong sorter, but any way.
return items
};
Template.list.events({
'click .toggle': function(e) {
var item = Items.findOne( $(e.target).closest('.box').data('id') );
Items.update(item._id, {$set: {
property: !item.property;
}});
// Save the removed item in the removed list.
item.property = !item.property
item.deleted = true // To distinguish them from the none deleted ones.
removed.push(item)
},
});
这应该对你有用,不是吗?但可能还有更好的解决方案。
相关文章:
- Laravel 5.2:如何使用Ajax发布和删除数据
- getJSON()-如何删除数据参数前面的AND符号
- 从json数组中删除数据
- Knockoutjs:只在文本框中写入内容时显示内容,在删除数据时隐藏内容
- 无法删除数据表jquery中的多行
- 根据条件删除数据行
- 在$invalid上添加验证指令并从文本框中删除数据的指令
- 从页面上点击的链接中删除数据,然后移动到下一页&在CasperJS中重复
- 正在删除数据(刷新)WebGL Globe
- d3j :删除数据集
- 轨道:找不到文件“提前输入.js”.直到我删除“数据涡轮链接”
- 如果要使用 JSP 和 Java 脚本删除数据,则需要一个确认框
- 删除数据网格 (Dojo) 和表 (数据网格) 的实例正确显示
- 如何从子元素中删除数据目标和数据切换,或禁止元素触发事件
- 在 d3 中单击画布时删除数据
- JSON 解析或删除数据中的双引号,获取表单模型或 rails 中的数据库
- 如何从 php 文件向 json 文件添加和删除数据
- AngularJS:ng-switch从输入字段中删除数据
- 从嵌套对象中删除数据而不发生突变
- 在挖空.js中删除数据后刷新视图模型