页面国际化
国际化怎么做,到时再补充,这里要说的是怎么绑定
比如有个linkbutton id为startButton,label就是其要显示的值,通常会有人直接用label = "{resourceManager.getString('i18n','start')}",这种绑定很难看,影响我们编写代码,都不好布局拉得特长,别扭。我们用下面这种方式来绑定:
<fx:Binding source="{resourceManager.getString('i18n','start')}" destination="startButton.label" />
然后label = “start”,这样就会自动变化的.
所有用fx:Binding能达到分离的效果,但是某些时候,用fx:Binding就不适合了,如
加入a页面是个订单页面有个下单按钮,在创建订单是 改按钮叫 'Place Order',当选中中文之后,就变成‘下单’,此时单从这个页面我们可以考虑用上面的fx:Binding方法,此时又增加一个需求,从订单列表页面过来时,我们视为修改,不叫下定单了,因此该按钮应该叫 ‘Submit’,中文是‘提交’,显然用fx:Binding是无法实现的,因为fx:Binding的source是固定的指定资源,而且也没有id 去引用,这时我们就用下面这种方法,如
<s:Button id="btnPlaceOrder"
label="{someFunction(btnSave.label)}"
click="btnPlaceOrder_clickHandler(event)"/>
<s:Button id="btnSave"
label="{resourceManager.getString('i18n','save')}" click="btnSave_clickHandler(event)"/>
someFunction的定义为:
private function someFunction(_val:String):String
{
//新增
if (this.lbId == 0)
{
return resourceManager.getString('i18n', 'placeorder');
}
//修改
return resourceManager.getString('i18n', 'submit');
}
当该方法的参数_val改变时,即btnSave.label的值改变时,就会调用someFunction方法,这相当于监听别人的改变,也让自己改变, 这种测试在按钮下测试通过,其他组件测试不通过,原因不详。