Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript backbone.js数据链接_Javascript_Jquery_Backbone.js - Fatal编程技术网

Javascript backbone.js数据链接

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

我试图链接一个输入、一个模型和一个dom元素

<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));
},