2014-12-04 104 views
0

不时我有一个控件属性绑定到需求基础上,以另一种模式B.如何将SAPUI5控件属性与数据绑定绑定?

例如语法看起来是这样的(但不工作)数据输出模型A:

text : "{B>/rootB/{A>someValue}/propertyB}" 

我通常通过“滥用”未使用的控件属性和格式函数来解决此问题。它应该是这样的:

tooltip : { 
    path : "A>someValue", 
    formatter : function(oValue) { 
     // do some checks on oValue 
     var path = "B>/rootB/"+oValue+"/propertyB"; 
     this.bindProperty("text", path); 
    return undefined; // because tooltip is not used 
    } 

这样做的好处,每次“A> someValue中”将被改变的“文本”绑定会自动更新。 也可以在模板代码中执行此操作(如项目聚合)。

但你可能会闻到代码;)

任何建议,使其更清洁?

回答

1

据我所知,在UI5中还没有这种可能性。正如您已经提到的,我总是使用格式化函数。我说不是因为开发者似乎意识到这个功能请求:see on GitHub

但是,你不需要错过一个随机控制属性!只需使用格式化从任何模式读取所需的值,您可以访问:

text : { 
 
    path : "A>someValue1", 
 
    formatter : function(oValue) { 
 
     // read model B to get someValue2 (based on someValue1) 
 
     var path = "B>/rootB/"+oValue+"/propertyB"; 
 
     
 
     var B = getModel("someModel"); 
 
     var someValue2 = B.getProperty(path); 
 
     
 
     return someValue2 
 
    }

+0

也是一个好主意,但比双向绑定是不行的(如果需要的话)? – user3783327 2014-12-05 13:08:44

+0

使用格式化程序时,不支持双向绑定。 在这些情况下,我在更改控件值时使用更改事件来更新数据模型。 – phigem 2014-12-05 21:22:24