Обязателен простой ярлык для addeventlistener
Я никогда не понимал смысла связывания, за исключением того, что это фактически сокращение для addeventlistener.
есть что-то еще? я что-то пропустил?
спасибо, dsdsdsdsd
2 ответа
Привязка данных - это декларативное определение способа отображения данных в пользовательском интерфейсе. Под капотом это немного сложнее, потому что есть больше потребностей, чем просто зацепка addEventListener
поддерживать функции привязки данных.
На самом деле это очень мощная функция, и чтобы понять ее подробнее, мы можем взглянуть на простое приложение "Hello World":
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:HGroup>
<s:TextInput id="input" />
<s:Label text="Hello {input.text}" />
</s:HGroup>
</s:Application>
Теперь скомпилируйте это приложение с --keep
флаг компилятора и посмотрите на новую папку "bin-debug/ Generated". Мы заинтересованы в HelloWorld-generated.as
Вот где эта привязка определяется и вызывается из конструктора:
private function _HelloWorld_bindingsSetup():Array
{
var result:Array = [];
result[0] = new mx.binding.Binding(this,
function():String
{
var result:* = "Hello " + (input.text);
return (result == undefined ? null : String(result));
},
null,
"_HelloWorld_Label1.text"
);
return result;
}
Чуть позже в конструкторе HelloWorld вы получаете вызов для настройки наблюдателей:
_watcherSetupUtil.setup(this,
function(propertyName:String):* { return target[propertyName]; },
function(propertyName:String):* { return HelloWorld[propertyName]; },
bindings,
watchers);
Который действительно просто делает это:
watchers[0] = new mx.binding.PropertyWatcher("input",
{ propertyChange: true },
[ bindings[0] ] ,
propertyGetter );
watchers[1] = new mx.binding.PropertyWatcher("text",
{ change: true,
textChanged: true },
[ bindings[0] ],
null);
Все становится сложнее с двусторонними привязками.
Привязка данных во Flex 4 МОЖЕТ быть описана как ярлык для addEventListener() - но это немного похоже на утверждение, что машины - это всего лишь ярлык для ходьбы. Если вы только обходите блок, ничего страшного - но если вы создаете сложное приложение с множеством средств визуализации элементов и множеством точек данных, которые могут меняться в любой момент, привязка данных позволяет избежать написания сотен addEventListener () и removeEventListener(), а также связанные с ними обработчики. В этом контексте это действительно очень важно.