0

我真的很喜欢handlebars.js 模板,但我想挂接数据绑定以在数据更改时更新模板。我已经知道如何做这样的事情:

var users = ['hello','world','third'];
var source = '<form>{{#each users}}<input type="text" value="{{this}}">{{/each}}</form>';
var template = Handlebars.compile(source);
$('.form-cont').html(template({users: users}));

如果我想稍后添加另一个用户

users.push('last');

现在要更新模板,我更新 HTML

$('.form-cont').html(template({users: users}));

我只想更新已更改的内容,在上面的代码中,原始 html 被删除并替换为新模板。有没有办法只更新更改的内容?意思是在每个中添加一个项目而不清除原始输入。

我知道 Knockout.js、Angular.js 和 Ember.js 已将其内置到他们的框架中。我正在寻找一个更轻量级的解决方案,它只处理模板绑定,而不是整个框架。外面有什么吗?

4

1 回答 1

0

Handlebars 没有内置数据绑定。Ember.js 和 Sproutcore 使用带有数据绑定扩展的 Handlebars 模板。还有一些库,如 juggy/backrub 或 backbone.modelbinding 用于与 Backbone.js 集成。还可以查看 mikeric/rivets 以获得一般数据绑定支持。一个轻量级的选项可能是使用具有 pub-sub 功能的事件数组实现,例如 azer/new-list。

于 2013-06-09T05:50:02.137 回答