Привязка выражений SAPUI5: true "имеет тип string, ожидаемое логическое значение для свойства" заблокировано " - PullRequest
0 голосов
/ 01 июля 2019

У меня есть некоторая реализация, где я зацикливаюсь на массиве объектов и создаю новый GenericTile для каждого объекта.Мне нужно установить свойство blocked плитки, зависящее от свойства objects Count.

Я пытался использовать для этого некоторую привязку выражения, но я получаю следующую ошибку:

"true" имеет тип string, ожидаемое логическое значение для свойства "заблокировано" из элемента Element.m.GenericTile # exampleTile0

Поскольку мои данные находятся не в модели, а в объекте, я пытаюсь использовать некоторую переменную в привязке выражения.Я не нашел ни одного примера для этого случая, поэтому я не уверен, может ли это вообще сработать или мне нужно создать новую модель (по крайней мере, текст ошибки звучит для меня так, как переменная интерпретируется).

Вот мой соответствующий код:

for (var i = 0; i < aExampleData.length; i++) {
    var oNewTile = new GenericTile("exampleTile" + i, {
        tileContent: new sap.m.TileContent({
            content: new sap.ui.layout.HorizontalLayout({
                content: [
                    new sap.m.Title({
                        text: aExampleData[i].Name
                    }),
                    new sap.m.Text({
                        text: aExampleData[i].Description
                    }),
                    new sap.m.HBox({
                        items: [
                            new sap.m.Text({
                                text: that.getResourceBundle().getText("count")
                            })
                            new sap.m.Text({
                                text: aExampleData[i].Count
                            })
                        ]
                    })
                ]
            })
        }),
        blocked: "{=" + aExampleData[i].Count + "> 0 ? false : true }"
    });

    this.byId(xxx).addItem(oNewTile);
}

Может кто-нибудь подсказать, как это решить?Спасибо!

Ответы [ 3 ]

0 голосов
/ 01 июля 2019

заменить

blocked: "{=" + aExampleData[i].Count + "> 0 ? false : true }"

на

blocked: !(aExampleData[i].Count > 0)

Использование синтаксиса выражений здесь бессмысленно, так как привязка не используется

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

По сути, привязка выражений была введена для представлений XML

Связывание выражений особенно полезно в контексте шаблона XML SAPUI5, где представления XML с шаблоном предопределены, так что контроллер SAPUI5 является естественным местом дляпоставить пользовательские функции форматирования, которые недоступны. Источник

В JS вы можете использовать функцию форматирования для связанных значений или в качестве Ji aSH, просто указывая переменное условие

0 голосов
/ 01 июля 2019

Я забыл, что могу просто использовать некоторую переменную в цикле, например:

if (aExampleData[i].Count > 0) {
    bBlocked = false;
} else {
    bBlocked = true;
}

... и назначить ее для свойства заблокированного.

Однако было бы интересно выяснить, может ли переменная также использоваться в привязке выражения и как можно устранить ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...