我怎样才能使表单控件在“write back”中具有响应性?的方式
How can I make form controls be reactive in a "write back" manner?
假设我有两个文本输入字段,它们的值与集合的名称和描述是动态关联的:
{{#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
您正在寻找的是所谓的双向数据绑定。正如@emgee所指出的,它还没有在Meteor中得到原生支持。也就是说,您可以使用以某种方式添加它的包来扩展Meteor:
- Handlebar-bind是专门为Handlebars模板添加双向数据绑定支持而设计的。参见
liveUpdate:true
说明书。不过要注意,该软件包将自己描述为"早期预览测试状态"。 - Angular.js for Meteor将Angular框架添加到Meteor中。这是一个更激进的解决方案,它将或多或少地用支持双向数据绑定的Angular.js模板取代拉手条。虽然Angular本身已经很成熟了,但它在Meteor中的实现目前还处于类似的alpha阶段。
相关文章:
- 捕获所有关键输入,直到以响应式编程方式按下 ENTER
- 弹出框在移动设备上的响应方式
- 接收json异步响应的最有效方式
- 如何使用javascript中的间隔以顺序方式处理websocket响应
- 在 Node JS 中获取、操作和编写(响应)巨大 JSON 的最佳方式
- 以优雅的方式将响应文本解析为键值对
- 响应式模板的“棱角分明”方式?匹配媒体是否进入“控制器”
- 如何让 Javascript 和 PHP 以相同的方式对 JSON 响应进行排序
- 用不同的方式创建响应式网站
- 将facebook的响应从一个js文件传输到另一个文件的最佳方式
- 什么'当从AngularJS中的API响应接收到错误时,触发错误弹出模式的最佳方式
- 在HTTP响应中发送大型比特流的有效方式
- 在Google脚本中尝试/捕获HTTP响应的最佳方式
- 根据窗口大小调整无响应网站的最佳方式
- 避免无响应脚本的跨浏览器方式
- 是否可以构造一个链接,导航到它并以编程方式用C#打印响应?怎样
- 在响应请求之前,web服务器可以通过何种方式检查是否重定向现有页面上的GET请求
- 我怎样才能使表单控件在“write back”中具有响应性?的方式
- 以编程方式添加处理程序来响应表单处理程序
- 更智能的方式从Mysql创建JSON响应