Chcę wiązać dane JSON do przeglądania, próbowałem jak poniżej:
XML:
<m:Select id="Employee" items="{Employee>/EmployeeList}">
<c:Item key="{Employee>key}" text="{Employee>value}" />
<m:layoutData>
<l:GridData span="L2 M2 S2"/>
</m:layoutData>
W ten sposób moje dane JSON brzmi:
var xyz = {
"Employee": {
"EmployeeList": [{
"key": "ram",
"value": "ram"
},
{
"key": "raj",
"value": "raj"
},
{
"key": "rani",
"value": "rani"
}
]
}
}
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(xyz);
this.getView().setModel(oModel);
Mam pole wyboru w widoku Chcę pokazać nazwy pracowników jako rozwijane w widoku stronie.
2 odpowiedzi
Istnieje wiele błędnych założeń:
items="{Employee>/EmployeeList}"
Tutaj zakładasz, że masz model o nazwie {X0}}, która ma atrybut najwyższego poziomu EmployeeList
.
W rzeczywistości masz model bez nazwy i z atrybutem najwyższego poziomu Employee
.
Masz wybór:
- Zmień wiązanie
- Zmień swój model.
Opcja A: Zmień wiązanie:
Jest to Twoja opcja, jeśli nie możesz zmienić modelu (ponieważ pochodzi z twojego zaplecza w ten sposób).
Usuń nazwę modelu z wiązania (ponieważ model nie ma nazwy). Zbuduj odpowiednią ścieżkę do swojej listy. Na szczycie XYZ znajduje się właściwość Employee
, która jest obiektem, który ma właściwość EmployeeList
.
<m:Select id="Employee" items="{/Employee/EmployeeList}">
<c:Item key="{key}" text="{value}" />
<m:layoutData>
<l:GridData span="L2 M2 S2"/>
</m:layoutData>
</m:Select>
Opcja B: Zmień swój model
Jeśli nie jesteś zadowolony ze swojej struktury modelu i uważasz, że twoje wiązanie ma sens, możesz także zmienić model.
Najpierw zmień swój obiekt, aby pracownik był twoim górnym strukturą:
var xyz={
"EmployeeList":[
{
"key":"ram",
"value":"ram"
},
{
"key":"raj",
"value":"raj"
},
{
"key":"rani",
"value":"rani"
}
]
}
Podczas ustawiania modelu do widoku należy również podać nazwę, której oczekujesz w wiązaniu:
this.getView().setModel(oModel, "Employee");
OK, ustawisz swój model na swoim widoku jako nieznany model. Tak więc prawidłowe wiązanie to:
<m:Select id="Employee" items="{/Employee/EmployeeList}">
<c:Item key="{key}" text="{value}" />
<m:layoutData>
<l:GridData span="L2 M2 S2"/>
</m:layoutData>
</m:Select>
Podobne pytania
Nowe pytania
sapui5
Ten znacznik „sapui5” obejmuje zarówno zastrzeżone (SAPUI5), jak i otwarte wersje (OpenUI5) frameworka. Pytając o inteligentne sterowanie lub elementy Fiori, rozważ odpowiednie dodanie tagów [odata] i [sap-fiori].