SAPUI5: как получить BindProperty из свойства, связанного с моделью?

У меня есть этот код:

//create table
tableContent=getcontent();

    var oTable2 = new sap.ui.table.Table(tableId, {
        width : "100%",
        visibleRowCount: tableContent.length,
        selectionMode : sap.ui.table.SelectionMode.None,
        resizable : false,
        flexible : false
    });

    var img = new sap.m.Image({
            press: function() {console.log(img.getProperty("src"))
        }});

    img.bindProperty("src", "src");

    oTable2.addColumn(new sap.ui.table.Column({
            label: new sap.ui.commons.Label({ text: "" }),
            template: img,
            autoResizable: false,
            width : '10%'
        }));
    var oModel2 = new sap.ui.model.json.JSONModel();
    oModel2.setData({ modelData: tableContent });
    oTable2.setModel(oModel2);
    oTable2.bindRows("/modelData");
    oTable2.sort(oTable2.getColumns()[0]);
    oTable2.placeAt(containingDivId);

Проблема в том, что я определяю свойство в конструкторе, которое должно печатать img источник:

var img = new sap.m.Image({
            press: function() {console.log(img.getProperty("src"))
        }}); 

Но когда я пытаюсь принять это так:

img.bindProperty("src", "src");

Я получаю пустой текст (ничего).

Как я могу получить это ограниченное значение? Любая другая функция?

Второй вопрос: как я могу добавить пользовательское свойство img? Скажем, я не буду иметь в img: src, alt и myCustomTxt. Как я могу добавить недвижимость myCustomTxt?

Обновить:

Я пробовал:

  var img = new sap.m.Image({
        "src" : "assets/images/btn-X.png",
        "press" : function(event) {
            var binding = event.getSource().getBindingInfo("src").binding;

                console.log(binding.getValue());

        }
    });

но я получаю эту ошибку при нажатии на изображение:

cart-module.js:151 Uncaught TypeError: Cannot read property 'binding' of undefined(…)

Спасибо!

1 ответ

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

new sap.m.Image({
    "path" : "{src}",
    "press" : function(event) {
        var binding = event.getSource().getBindingInfo("src").binding;
        if (binding) {
            jQuery.sap.log.debug(binding.getValue());
        }
     }
});

Для добавления пользовательских атрибутов вы можете использовать метод addCustomData, который ожидает и экземпляр sap.ui.core.CustomData.

img.addCustomData(new sap.ui.core.CustomData({ "key" : myCustomTxt, "value" : "myCustomText" });
Другие вопросы по тегам