Flex条件表达式问题的评估(数据绑定?)

时间:2015-05-18 08:48:40

标签: actionscript-3 flex data-binding actionscript

我在Flex中对条件表达式的估值有问题。

让我解释一下。

我有这个:

    <s:Label text="SomeTextLawyer" includeInLayout="{Session.isLawyer()}"
 visible="{Session.isLawyer()}"/>
    <s:Label text="SomeTextDoctor" includeInLayout="{Session.isDoctor()}"
 visible="{Session.isDoctor()}"/>

此Session对象定义如下:

public class Session extends Singleton
{
    [Bindable]
    private static var user:User;

[...]

    public static function isDoctor():Boolean {
        return Session.user.type == model.type.DOCTOR;
    }

    public static function isLaywer():Boolean {
        return Session.user.type == model.type.LAWYER;
    }
}

我有一个改变用户的机制,所以我的用户可以先是医生,然后是律师。问题是我的标签保留了他们的第一个估值。如果我先以医生的身份联系,如果我以律师身份更改用户身份,我仍会显示医生标签。反之亦然......

在AS代码上,我的用户是好用户,但不在我的mxml文件上......所以只有显示的部分才会看到用户切换。

有什么想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用可绑定的布尔值来检查用户类型,例如:

angular.module('myapp',[]).
  config(['$routeProvider', function ($routeProvider) {
      $routeProvider.when('/', { templateUrl: '/menu/Noodle.html', controller: HomeController });
      $routeProvider.when('/about', { templateUrl: '/pages/about.html', controller: AboutController });
      $routeProvider.when('/privacy', { templateUrl: '/pages/privacy.html', controller: AboutController });
      $routeProvider.when('/terms', { templateUrl: '/pages/terms.html', controller: AboutController });
      $routeProvider.otherwise({ redirectTo: '/' });
  }]);

并在show control例程中设置它们的值,例如:

[Bindable] public var isDoctor:Boolean;
[Bindable] public var isLawyer:Boolean;