Когда Flex видит что-то вроде этого:
<mx:Label text="Hello {MyVar} World!"/>
Это должно как-то перевести в ActionScript. Но что, если мне нужно сделать что-то подобное, во время выполнения. Как я могу выполнить то, что динамично? КОГДА Я НЕ ЗНАЮ СОДЕРЖАНИЕ ШАБЛОНА СВЯЗИ.
В ActionScript необходимо, чтобы он выглядел что-то примерно так:
public function CustomDynamicBinding(StringToBind:String):Label {
// *EXAMPLES* Of StringToBind:
// "Hello {MyVar} World!"
// "Product: {name} ${price}.00"
// "{data.label}, {data.description}"
// I've Written It This Way Because I DO NOT KNOW The Exact Text To Be Bound At Design Time.
[Bindable]
var Lab:Label=new Label();
Lab.text=???
return(Lab);
}
Как я могу выполнить этот вид "динамического" связывания ... Где я не знаю значение "StringToBind" до времени выполнения? Для целей этого вопроса мы можем предположить, что я знаю, что любая переменная (и), упомянутая в «StringToBind», гарантированно существует во время выполнения.
Я уже понимаю, что есть гораздо более простые способы выполнить эту задачу СТАТИЧЕСКИ, используя только Flex / MXML. Для моего проекта важно, чтобы я понимал, как это можно сделать без MXML.
Делаем это:
lab.text = stringToBind.replace ("{myVar}", str);
НЕ будет работать, потому что это просто присваивает ОДНАКО значение "{myVar}" - (которое может даже не БЫТЬ переменной, на которую ссылается "stringToBind" !!) метке, и не учитывает, когда и если myVar изменения! Разве мне не нужно каким-то образом использовать что-то вроде bindProperty?