Javascript backbone.js数据链接
我试图链接一个输入、一个模型和一个dom元素Javascript backbone.js数据链接,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我试图链接一个输入、一个模型和一个dom元素 <div data-carName="Isetta"> <input type="textfield" name="speed"/> <br /> <br /> Speed: <br /> <div>{speed}</div> </div> var Isetta = { speed:speedval } 速度: {spee
<div data-carName="Isetta">
<input type="textfield" name="speed"/>
<br />
<br />
Speed: <br />
<div>{speed}</div>
</div>
var Isetta = {
speed:speedval
}
速度:
{speed}
var Isetta={
速度:speedval
}
如果我希望无论何时更改卡片速度输入,speed dom元素也随之更改,javascript对象/模型也随之更改,我该怎么办
我可以通过jQuery数据链接轻松做到这一点。如何使用backbone.js实现这一点
谢谢
var Car = Backbone.Model.extend({ });
var CarView = Backbone.View.extend({
model: Car,
initialize: function() {
this.model.bind('change', _.bind(this.render, this));
}
render: function() { ... }
}
汽车模型将生成事件,CarView将响应这些事件。事件的列表要比数据链接的列表广泛得多——如果您愿意,您可以添加自己的事件。jQuery数据链接似乎完全与表单有关,并且具有有限的过滤机制。这很有趣,但是它显然解决了一个主干和其他MVC库所要解决的不同问题。
你也可以考虑将击键事件和定时器绑定到输入域,这样当用户输入完输入时,就会触发模型上的事件,然后更新视图:
如果将id=name
添加到该字段,则可以在视图中添加如下内容:
events: {
"keypress #speed" : "updateViewOnEnter"
},
updateViewOnEnter: function(e) {
if (e.keyCode != 13) return;
e.preventDefault();
this.model.trigger('speed:change');
},
如果您想在用户仍在该输入字段中键入时限制函数调用,请查看Remy Sharp的此限制函数:
您还可以查看这个库:它添加了一个模块,可以为您处理动态和基于约定的绑定。现在,我已经解决了这个问题。我认为您也可以在第二个示例中使用“更改”事件,而不是按键。Derick“放弃”了上面链接的项目,支持和
events: {
"keypress #speed" : "updateViewOnDelayedKeypress"
},
updateViewOnDelayedKeypress: function(e) {
throttle(function (e) {
this.model.trigger('speed:change');
}, 250));
},