我喜欢 Meteor 的一件事是,在客户端完成的更新、插入和删除操作会自动在服务器端持久化。大多数时候这很棒。但有时您想使用 Meteor 的集合来进行显示逻辑,或者您希望有特定的、分阶段的“保存”,用户必须专门提交。因此,您希望继续使用集合进行渲染,但不一定希望将这些更改保存到数据库中。
也许一个例子将有助于说明这一点。
我有一个呈现指定地图原点的表单。
<template name='map'>
<button class='select-origin'>Select Origin</button>
{{#with currentMap}}
{{this.latitude}} - {{this.longitude}}
{{/with}}
</template>
Template.map.helpers({
currentMap: function(){ return Maps.findOne(Session.get('currentMap')) };
});
当我编辑地图时,将从数据库中读取纬度和经度并进行适当的渲染。
但我也想让用户选择一个新的地图原点并更新模板而不保存新的地图原点。我希望用户单击地图,然后我可以使用它来更新集合客户端,然后更新模板。但我希望用户专门单击save
,然后将新的纬度和经度保留在服务器上。这样的事情在 Backbone 中很容易(其中set
和save
是不同的),但在 Meteor 中似乎并不容易。
有没有人有很好的策略来处理这些情况?