0

是否可以使用Backbone.jsjquery.datalink.js一起将 Backbone 模型链接到一组字段,如果可以,如何?

例如,给定:

<div id="person">
  <label for="name">Name:</label>
  <input type="text" name="name" id="name" />
</id>

var m = Backbone.Model.extend({});

一个人可以:

$("#person").link(m);

“不起作用”是指当我更改模型时,链接不会更新输入字段。当我更改输入字段时,模型不会更新。

我一直在 jsFiddle 上修修补补,但无济于事。事实上,似乎数据链接插件实际上并没有像记录的那样工作(除非我犯了一个错误)。

如果数据链路不适合这个,我会很感激替代建议。

我会很感激你的想法和反馈。

4

2 回答 2

1

@Sam 提供的解决方案预计会起作用,但它具有您必须注意的相关问题。骨干模型是可观察的,即。您可以绑定函数来更改模型中的事件。这些事件由 Backbone 提供的包装器 getter 和 setter 函数触发。如果您绕过这些 getter 和 setter,直接使用 model.attributes 则不会在数据更改时触发事件。因此,如果您的数据链接关联是单向的,即,这不是问题。当 javascript 对象被修改时,视图会发生变化,但是如果你想实现双向数据链接,你会遇到问题,因为当用户操作视图时,模型属性会被修改,但相应的设置器是未使用,因此其他应用程序代码不会被通知更改。这可能会导致难以调试的问题。如果数据绑定是您最关心的问题,请查看具有最先进数据链接功能的 KnockoutJS。

于 2011-06-18T08:29:43.563 回答
1

我没有使用 Datalink 插件,但这可能会有所帮助......

这种违反了封装原则,但您可以使用model.attributesBackbone 模型中的对象。

所以也许是这样的:

$("#person").link(m.attributes);

此外,当您实例化 Backbone.Model 时,它看起来像这样:

var m = new Backbone.Model();

当您调用时,Backbone.Model.extend您实际上创建了一个新的构造函数(如新类),而不是对象实例。

于 2011-05-02T20:58:44.813 回答