2016-08-19 2 views
0

간단한 양식으로 데이터를 바인딩하는 데 문제가 있습니다. 나는 모의 서버를 사용하고 있습니다 및 목록/테이블에 데이터를 바인딩 성공적으로 한 내 manifest.json을 모습SimpleForm의 SAPUI5 데이터 바인딩

"mock": { 
    "dataSource": "mainService" 
} 
내 mockdata (UserDetailsSet.json)이이

[{ 
    "ID_PassNum": "cu001", 
    "Title": "Mr", 
    "Name": "Don", 
    "Surname": "Ownery", 
    "ResType": "SA", 
    "Country": "South Africa" 
}] 
처럼 보이는

내 SimpleForm 필드는 다음과 같습니다.

<Label text="Name" /> 
<Input value="{mock>/UserDetailsSet/0/Name}" /> 
<Label text="Surname" /> 
<Input value="{mock>/UserDetailsSet/0/Surname}"/> 

무엇이 누락 되었습니까?

답변

1

ODataModel을 사용하고있는 것 같습니다. 컬렉션/집계에 대한 ODataModels 바인딩은 JSONModel만큼 쉽지 않습니다. collection/index/property 구문을 사용하여 속성에 액세스하거나 바인딩 할 수 없습니다. ODataModels 데이터를 저장

는 기업이 어느 정도 같이 좋아 ODataModel 당신에 저장된 UserDetailSet 데이터와 같은 설정로드하면 어떻게

:

{ 
    UserDetailSet('00001'): { ... }, 
    UserDetailSet('00002'): { ... }, 
    UserDetailSet('00003'): { ... }, 
    UserDetailSet('00004'): { ... } 
} 

'00001'반면 등등 IS 엔티티 키. UserDetailSet에 집계 바인딩을 만드는 경우 ODataListBinding은 위 데이터를 항목 당 컨텍스트로 변환하는 작업을 처리합니다.

속성 ODataModel

에 바인딩 여러분과 같이 할 것 바인딩 :

<Label text="Name" /> 
<Input value="{mock>/UserDetailSet('00001')/Name}" /> 
<Label text="Surname" /> 
<Input value="{mock>/UserDetailSet('00001')/Surname}"/> 

동적 속성 ODataModel

에 바인딩 또는 - 좀 더 동적으로 - 다음과 같이 바인딩하십시오 (참고 : 바인딩은 상대적이며 현재는 no /입니다) :

<SimpleForm id="MyForm"> 
    <Label text="Name" /> 
    <Input value="{mock>Name}" /> 
    <Label text="Surname" /> 
    <Input value="{mock>Surname}"/> 
</SimpleForm> 

동적은 SimpleForm 자체에 bindElement를 사용

this.getView().byId("MyForm").bindElement({ 
    path: "/UserDetailSet('"+ sUserID +"')", 
    model: "MyOdataModelID", 
    // use OData parameters here if needed 
    parameters: { 
    "expand": "UserAdress" 
    }, 
    // react on binding events here 
    events: { 
    change: function (oEv) { }, 
    dataRequested: function (oEv) { }, 
    dataReceived: function (oEv) {} 
    } 
}); 

BR 크리스

+0

안녕 도움 주셔서 감사합니다. 아직 작동하지 않지만 교육적인 반응에 감사드립니다. 감사 –

+0

초기 게시물에 무엇 외에도 하이 를 코드 – cschuff

+0

의 좀 더 게시 할 수 있음 I가 다음 매니페스트 "데이터 소스": { \t \t \t "mainService": { \t \t \t \t " URI는 ":" ":"중 하나로, OData " \t \t \t \t"setti/여기가// 당신의/것은 serviceUrl/", \t \t \t \t"유형을 간다 NGS "{ \t \t \t \t \t"주석 "[] \t \t \t \t \t"odataVersion ""2.0 " \t \t \t \t \t"localUri ":"LOCALSERVICE/metadata.xml " 그리고 모의 서버를 기반으로 실제로 데이터를 표시하고있는 양식 필드 아래의 목록. 내보기 컨트롤러의 init 이벤트에 코드가 없습니다. 나는이 this.getView()와 같은 코드를 시도 byId ("MyForm을")를 bindElement가 ({ 경로 : "/ UserDetailSet가 ('00001')", 모델 : "모의"}).. 감사 –

0

모의이

<Label text="Name" /> 
<Input value="{mock>Name}" /> 
<Label text="Surname" /> 
<Input value="{mock>Surname}"/> 

경우는 단지 하나의 오브젝트 같아야 바인딩. 작동하지 않는 경우 모델을 뷰에 설정 한 컨트롤러 코드를 입력하십시오.

+0

안녕 당신의 도움에 대한 감사합니다. 바인딩 제안을 시도했지만 작동하지 않았습니다. 모델을 뷰에 설정 한 위치에 컨트롤러 코드를 넣으면 정확히 무엇을 의미합니까? 이게 무슨 뜻일까요, 아니면 어떻게할까요? : onInit : function {// 컨트롤러보기 this.getView.setModel ('mock'); .... 고맙습니다 –

+0

그럼 모의 모형에 목록이 있습니다 .. 그런 다음 모의 변경>/0/name – chiranjeevigk

+0

고마워요. 이미 시도했지만 작동하지 않았습니다. 도움 주셔서 감사합니다. –