随着jQuery和喜欢的大量Web服务和客户端模板功能,创建mashup或网站消耗大量Web服务并将数据发布回这些服务变得非常流行。对于具有这种体系结构的适当大小的页面,请说一个仪表板。维护此客户端状态的有用技巧是什么?换句话说,什么是进行双向数据绑定的一些方法? 示例场景:
答案 0 :(得分:4)
在jQuery中,您可以轻松地执行调用服务的页面加载的AJAX请求,返回一个对象,并使用jQuery Templates插件将该对象绑定到表单。当需要提交表单时,您可以使用jQuery Form插件通过AJAX发送到服务并返回JSON对象,将其绑定到jQuery Templates插件容器(表单)。
另外,您可以结合使用jQuery“Form”插件发送表单,以及KnockOut JavaScript库,这些都是您想要做的绑定类型。
上的敲除JS库详细信息其中列出的前两个功能包括:
请参阅此实例,了解非常小的介绍http://knockoutjs.com/examples/helloWorld.html
<强>更新强>
由于这个答案得到了最近的推特,所以提到镇上相对较新的孩子,angularJS也很重要,它是一个更大的框架,可以做很多事情,但做双向数据绑定是最简单的事情。
官方网址:http://angularjs.org
示例:http://docs.angularjs.org/guide/forms
答案 1 :(得分:3)
Angular是我见过的最令人印象深刻的双向数据绑定播放器。您可以使用普通的旧JavaScript对象,将它们附加到Angular范围对象,然后将范围绑定到DOM的一部分。这是Angular 0.9的一个例子。 (Angular 1.0使用非常不同的API来实现相同的功能。)
// angular.compile() returns a databinding function
var databind = angular.compile(document.documentElement);
var model = angular.scope();
// add data to the scope object
model.greeting = "Hello, World!";
model.colors = ["red", "green", "blue"];
// hook 'em up
databind(model);
您可以在HTML中使用角度表达式进行数据绑定,包括表单控件。
<!DOCTYPE html>
<input name="greeting" />
<span ng:repeat="color in colors" style="color: {{color}}">
{{color}}
</span>
在这种情况下,范围对象的greeting属性会随着文本框中的每次击键而更新。
或者,如果您不想在HTML中使用数据绑定表达式,则可以手动执行所有操作。
model.$watch("greeting", function (value) {
// when the greeting changes, update the DOM
$("input[name=greeting]").val(value);
});
然后每次更新范围对象并调用$ eval()时,如果有任何更改,将通知侦听器。
model.greeting = "Hi.";
model.$eval();
最好的部分是你可以对附加到作用域的任何内容进行更改,调用它的$ eval()方法,并且HTML会自动更新。
model.colors.append("yellow");
model.colors.sort();
model.$eval(); // notifies listeners, including bound HTML
Knockout JS不如,因为您不必使用纯JavaScript对象,数组,字符串和数字,而必须创建其Observable
和ObservableArray
类的实例数据绑定。
享受!
答案 2 :(得分:1)
我会看看Lava JS(http://lava.codeplex.com)。它具有非常好的数据绑定,使用起来非常不引人注目。它还支持获取/发布数据到服务器。