flex绑定及最佳国际化实现

页面国际化

  国际化怎么做,到时再补充,这里要说的是怎么绑定


比如有个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方法,这相当于监听别人的改变,也让自己改变, 这种测试在按钮下测试通过,其他组件测试不通过,原因不详。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值