Почему не удается связать строку таблицы с диалоговым окном? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь воссоздать этот пример, используя JSView:

https://embed.plnkr.co/BA9T4Z0QdsZrqkooWTs2/

Данные привязываются к таблице, а затем при щелчке строки связывают данные строкик диалоговому окну.

Я пытался следовать этому примеру в моем собственном проекте, но я не мог заставить его работать, поэтому я попытался воссоздать приведенный выше пример шаг за шагом в JSView.

https://embed.plnkr.co/jvaQyVgvjNP261lVBFaz/ (игнорируйте файл App.view.xml).

В строке 34 моего контроллера getBindingContext("userList") не определено, хотя я использую правильную модельname.

Это отличается от строки 31 контроллера примера, где getBindingContext("list") возвращает объект.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

На самом деле вам не нужно изменять событие, также с помощью события itemPress в Таблице все в порядке, параметры просто разные, и для получения выбранного элемента и дальнейшего его контекста используйте

var item = event.getParameter("listItem"); //returns pressed item

вместо

var item = event.getSource(); //return Table

Больше информации о событии itemPress в SDK

Удачи, Шанир

1 голос
/ 03 июля 2019

В примере XML нажатие на элемент задается для элемента списка столбцов, а в примере с JS - на таблице.getSource() затем возвращает таблицу вместо строки.Вы можете исправить это, изменив событие прессы:

var oTable = new sap.m.Table({
    id: "UserTable",
    columns: [
        new sap.m.Column({
            header: new sap.m.Label({
                text: "User ID"
            })
        }),
        new sap.m.Column({
            header: new sap.m.Label({
                text: "Name"
            })
        })          
    ]
});

var template = new sap.m.ColumnListItem({
    type: "Active",
    visible: true,
    press: [oController.onItemPress, oController],
    cells: [
        new sap.m.Text({
            text: "{userList>Userid}"
        }),
        new sap.m.Text({
            text: "{userList>Name}"
        })
    ]
});
...