2017-07-14 67 views
1

與參數綁定,我有以下問題:SAPUI5 XML查看來自同一型號

我想開發一個購物車,並具有與產品牌的櫃檯問題,我有問題,顯示在摘要的數據視圖。

對於這個項目我使用XML視圖,我已經有很多關於綁定。當我想要綁定靜態路徑時,我沒有任何問題。數據來自名爲「cartData」的JSON模型。

示例(從goToCart按鈕)

... 
text="{cartData>/currentUser}"; 
... 

一切正常顯示(在本例中),但我的項目,我需要綁定一個主要結合(對車的計數器),而在這個路徑需要參數爲用戶。將其保存在路徑中,如示例中所示。

我已經嘗試了很多的組合來完成這個bug,但現在我沒有更多的想法:-(

我試過組合的例子:

text="{ ${cartData>/cartOfUser/} + {cartData>/currentUser} + '/roles/counter'}" 

編輯:

我的代碼一些虛擬部:

我的按鈕(doen't工作但我需要怎麼...):

<m:Button 
       id="details.Btn.ShowCart" 

       text="{ parts: [ 
        {path: 'cartProducts>/cartEntries/'}, 
        {path: 'cartProducts>/currentChoice/'}, 
        {path: '/addedRoles/counter'} 
       ]}" 

       type="Emphasized" 
       icon="sap-icon://cart-3" 
       iconFirst="true" 
       width="auto" 
       enabled="true" 
       visible="true" 
       iconDensityAware="false" 
       press="showCart"/> 

如何看待在localStorage的我JSON型號,如:

{ 
    "cartEntries": { 
     "counter": 2, 
     "UserId12": { 
      "UserId": "UserId12", 
      "Email": "Email12", 
      "dateCreated": "2017-07-14T13:18:13.632Z", 
      "dateUpdated": "2017-07-14T13:18:13.632Z", 
      "addedRoles": { 
       "counter": 0 
      }, 
      "existingRoles": { 
       "counter": 0 
      } 
     }, 
     "UserId14": { 
      "UserId": "UserId14", 
      "Email": "Email14", 
      "dateCreated": "2017-07-14T13:18:30.415Z", 
      "dateUpdated": "2017-07-14T13:18:30.415Z", 
      "addedRoles": { 
       "counter": 0 
      }, 
      "existingRoles": { 
       "counter": 0 
      } 
     } 
    }, 
    "currentChoice": "UserId14" 
} 

我的JSON數據與評論: I need to grab the value from "currentChoice", to search with this information in cartEntries for the right counter

現在怎麼按鈕看: It show the data not in the correct way. Please ignore the zero at first...

的目標是將「currentChoice」的值作爲「參數」來爲正確的用戶調用信息。

我也試過:

text="{= ${= 'cartProducts>/cartEntries/' + ${cartProducts>/currentChoice/} + '/addedRoles/counter' } }" 

什麼工作,但我需要更多的 「動態」 是:

text="{cartProducts>/cartEntries/UserId14/addedRoles/counter}" 

我希望你小子現在知道我的意思... -/

問候

解決方案

我如何解決這個問題:

  1. 添加格式化到按鈕:

    /' 格式:' .formatter。_getCartInt」 }」 類型= 「強調」 圖標= 「SAP-圖標://車-3」 iconFirst = 「真」 寬度= 「自動」 啓用= 「真」 可見= 「真」 iconDensityAware = 「假」 按= 「showCart」/>

  2. 實現在我formatter.js文件格式:

    _getCartInt:功能(SP1){ VAR sCurrent = SP1 .currentChoice; var sFinalString =「cartProducts>/cartEntries /」+ sCurrent +「/ addedRoles/counter」; ()「);}}} this.getView()。byId(」btn.ShowCart「)。bindProperty(」text「,{path:sFinalString,type:new sap.ui.model.type.Integer()}); }

+0

你將需要格式化(或不同的結合方法)。如果你分享一些代碼可能可以幫助更多:) –

+0

「cartOfUser」屬性有什麼用途? –

+0

@AndriiNaumovych:它包含關於用戶和購物車的信息。 – STOXX50

回答

1

嘗試使用以下方法:

在國際化文件:

cartInfoTitle=User: {0} has: {1} items in the cart 

在XML視圖:

<Text text="{ 
    parts: [ 
     {path: 'i18n>cartInfoTitle'}, 
     {path: 'modelName>/property1'}, 
     {path: 'modelName>/property2'} 
    ], 
    formatter: 'jQuery.sap.formatMessage' 
}" /> 

所以你聲明的國際化進入和然後使用預定義的格式化程序將值替換爲佔位符「零件」數組(Documentation article)。

0

好吧,回答:你不能在綁定中使用表達式(同樣適用於類)。因此,要獲得所需的輸出,您確實需要一個格式化器+在綁定部分中包含JSON模型所需的頂級元素(以便正確更新)。

XML(我假設你的模型被稱爲 'cartData')

<Text text="{ 
    parts: [ 
     'cartData>/cartEntries', 
     'cartData>/currentChoice' 
    ], 
    formatter: '.myFormatter' 
}" /> 

JS控制器

controller.prototype.myFormatter = function (cartEntries, currentChoice) { 
    if (cartEntries && cartEntries[currentChoice]) { 
     return cartEntries[currentChoice].addedRoles.counter; 
    } 
} 

[代碼沒有測試]