2010-09-09 4 views
3

Я реализую структуру barebones в JavaScript, которая обеспечивает привязку данных между объектами. Связывание данных может быть односторонним или двухсторонним и потенциально иметь несколько объектов, привязанных к некоторому свойству. Есть несколько решений для привязки данных, доступных для разных языков, и я пытаюсь получить представление о лучшем из всех миров, чтобы вишня выбрала набор функций. До сих пор я исследовал следующие рамки, которые обеспечивают привязок:Основные примеры привязки данных

Пожалуйста, не стесняйтесь редактировать вопрос и добавлять дополнительные рамки, которые поддерживают привязку, если они отсутствуют.

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

+0

jQuery Data-Linking на самом деле просто ужасная '' 'оболочка вокруг потрясающей функциональности ASP.NET AJAX' Sys.Binding' и 'Sys.Observable' (вышла в версии 4.0). Об этом не говорится о ТАК. Вот один из примеров, которые я нашел: http://stackoverflow.com/questions/1500942/asp-net-ajax-4-0-client-templates-how-to-bind-a-select/1541761#1541761 –

+0

[jQXB] (http://www.jqxb.altervista.org), похоже, делают то, что вам нужно. двусторонняя привязка данных, поддержка составного шаблона, обмен данными с сервером – 2011-07-15 09:55:55

ответ

1

Также посмотрите на один из самых старых из них: инструментарий Tk (обычно связанный с tcl, но также доступный на других языках). В Тк обновления значения в GUI обычно делается простым обновлением переменной:

set foo "Hello" ;# just a simple variable 

# Create a label widget displaying "Hello" 
pack [label .l -textvariable foo] 

# Now change "Hello" to "Goodbye" 
set foo "Goodbye" 

Или более сложный пример, 10 второго обратного отсчета виджета:

set countdown 10 
pack [label .count -textvariable countdown] 

proc tick {} { 
    incr countdown -1 
    if {$countdown > 0} { 
     after 1000 tick 
    } 
} 
tick 

На самом деле, эта функция является производным от сам язык tcl через команду трассировки:

# A simple auto-incrementing variable: 

set foo 0 
proc autoIncrement {varname args} { 
    incr $varname 
} 
trace add variable foo read {autoIncrement foo} 

# now every time foo is read it increments itself by 1 

Конечно, вы не можете ожидать, что все языки будут иметь эту функцию. Вы можете подражать этому, опросив, используя, возможно, setInterval(). То, как Tk чувствует себя наиболее естественным для меня.

+0

В Mozilla реализовано 'Object.watch', которое я могу представить как полезный способ автоматического создания привязок в JavaScript. Но подход, сделанный Tk toolkit, и tcl кажется очень изящным. – Anurag

Смежные вопросы