假设我有两个文本输入字段,其值与集合的名称和描述相关联:
{{#with set}}
<input type="text" id="set_name" value="{{name}}" placeholder="Untitled Set"/>
<input type="text" id="set_desc" value="{{description}}" placeholder="Add Description"/>
{{/with}}
目前,当用户更改输入字段时,我必须添加代码以手动更新 Set 的属性,例如(在 CoffeeScript 中)
update = (set, field, newVal)->
newVal = $.trim(newVal)
if newVal && set[field] != newVal
keyVal = {}
keyVal[field] = newVal
Sets.update(_id:set._id, {$set:keyVal})
Template.cardSubmit.events
'change #set_name': (evt)->
update(this, 'name', evt.target.value)
'change #set_desc': (evt)->
update(this, 'description', evt.target.value)
一段时间后,这变得非常重复。有没有办法在 Meteor 中以声明方式做到这一点?如果没有,任何建议如何扩展 Meteor 以允许这种双向反应?
Knockout.js 有一种巧妙的方法(当然只是在客户端): http: //knockoutjs.com/documentation/value-binding.html