Вы, кажется, используете ODataModel
. В ODataModels привязка к коллекциям/агрегациям не так проста, как с JSONModel. Вы не можете получить доступ/связывать свойства с помощью синтаксиса collection/index/property
.
Как ODataModels хранить данные
Если загрузить множество сущностей, как ваши UserDetailSet
данные, хранящиеся в вас ODataModel нравится выглядеть примерно так:
{
UserDetailSet('00001'): { ... },
UserDetailSet('00002'): { ... },
UserDetailSet('00003'): { ... },
UserDetailSet('00004'): { ... }
}
В то время как «00001» и так далее есть ключ сущностей. Если вы создаете привязку агрегации на UserDetailSet
, ODataListBinding будет обрабатывать перевод вышеуказанных данных в контекст для каждого элемента.
Свойство Binding на ODataModel
Ваше связывание должны выглядеть следующим образом:
<Label text="Name" />
<Input value="{mock>/UserDetailSet('00001')/Name}" />
<Label text="Surname" />
<Input value="{mock>/UserDetailSet('00001')/Surname}"/>
Динамические свойства, привязанного на ODataModel
Или - быть немного более динамичным - (Примечание: привязки теперь относительные, нет ведущей /
):
<SimpleForm id="MyForm">
<Label text="Name" />
<Input value="{mock>Name}" />
<Label text="Surname" />
<Input value="{mock>Surname}"/>
</SimpleForm>
и динамически использовать bindElement
на самом SimpleForm:
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 Крис
Hi Спасибо за помощь. Все еще не работает, но благодарит за воспитательный ответ. Привет –
Может быть оставить немного больше кода – cschuff
Привет Кроме того, что в начальном посте у меня есть следующие Manifest "DataSources": { \t \t \t "mainService": { \t \t \t \t " URI ": "/ здесь/идет/ваш/serviceUrl /", \t \t \t \t "типа": "OData", \t \t \t \t" Setti 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')", модель: "издеваться"}).. Привет –