2014-12-04 98 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