Наиболее полезные методы для двухстороннего связывания данных с JS - PullRequest
5 голосов
/ 08 января 2011

В связи с обилием веб-сервисов и шаблонных функций на стороне клиента, таких как jQuery и лайки, создание коллажей или сайтов, использующих множество веб-сервисов и отправка данных в эти сервисы, становится чрезвычайно популярным.Для страницы приличного размера с такой архитектурой, скажем, панель инструментов.Каковы полезные методы поддержания этого состояния на стороне клиента.Другими словами, каковы некоторые из способов сделать двухстороннее связывание данных?Пример сценария:

  1. Получение данных из службы в формате JSON / XML
  2. Отображение / привязка в пользовательском интерфейсе
  3. Захват ввода пользователя
  4. Повторный запрос изЭлементы управления пользовательского интерфейса / html
  5. Отправка данных в службу
  6. Получение ответа и повторная привязка

Ответы [ 3 ]

4 голосов
/ 08 января 2011

В jQuery вы можете легко выполнить AJAX-запрос загрузки страницы, который вызывает службу, возвращает объект и привязывает этот объект к форме с помощью плагина jQuery Templates. Когда форму необходимо отправить, вы можете использовать плагин jQuery Form для отправки в службу через AJAX и вернуть объект JSON, связать его с контейнером плагинов jQuery Templates (форма).


также, Вы можете комбинировать использование плагина jQuery «Форма» для отправки формы и библиотеку JavaScript KnockOut, которая полностью соответствует виду привязки, который вы хотите сделать.

См. Подробности библиотеки JS для нокаута в http://knockoutjs.com/

Первые две функции, перечисленные здесь:

  • Дефективные привязки
  • Автоматическое обновление пользовательского интерфейса

Посмотрите этот живой пример очень маленького вступления http://knockoutjs.com/examples/helloWorld.html


Обновление:

Поскольку этот ответ получил недавнее одобрение, также важно упомянуть относительно нового в городе ребенка, angularJS, это немного большая структура, которая может делать так много вещей, но двустороннее связывание данных самая легкая вещь когда-либо.

Официальный URL: http://angularjs.org

Пример: http://docs.angularjs.org/guide/forms

http://gurustop.net

3 голосов
/ 28 марта 2012

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>

В этомВ этом случае свойство приветствия объектов области обновляется при каждом нажатии клавиши в текстовом поле.

Или, если вы не хотите использовать выражения привязки данных в своем 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 для привязки данных.

Наслаждайтесь!

1 голос
/ 14 января 2013

Я бы взглянул на Lava JS (http://lava.codeplex.com).. У него очень хорошая привязка данных, и он очень ненавязчив в использовании. Он также поддерживает выборку / отправку данных на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...