Как перехватить событие onchange переключателя, которое присутствует в каждой строке отдельной таблицы в наборе инструментов spark ui

Я использую таблицу пользовательского интерфейса искры, и у меня есть группа переключателей (Да и Нет) и чайная область в каждой строке. У меня есть несколько строк.

введите здесь описание изображения

Мое требование состоит в том, что если нажать «Да», то текстовое поле должно быть скрыто только в этой строке. Я написал код ниже при загрузке

var table = page.ui.get('/tablecv1/Table1');
var radiobtn = table.ui.getSibling('/tablecv1/Table1/Radio_Button_Group1');
radiobtn._instance.input.onchange = function(event){
    if(radiobtn.getData() == "yes"){
        radiobtn.ui.getSibling("Text_Area1").setVisible(true)
    }
    else{
        radiobtn.ui.getSibling("Text_Area1").setVisible(false,true)
    }
}

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


person user7350714    schedule 10.11.2018    source источник


Ответы (1)


Вы можете передать целевой переключатель встроенной функции. Это было бы так:

this.setAreaVisibility = function(radiobtn) {
    radiobtn._instance.input.onchange = function(event){
        if(radiobtn.getData() == "yes"){
            radiobtn.ui.getSibling("Text_Area1").setVisible(true)
        }
        else{
            radiobtn.ui.getSibling("Text_Area1").setVisible(false,true)
        }
    }
}

Затем в событии «При изменении» элемента переключателя вы должны вызвать эту функцию следующим образом:

me.ui.invoke("setAreaVisibility", me);
person EduMelo    schedule 10.12.2018