2016-11-19 2 views
0

Индекс свойство моего делегата компонента не распознается, когда он используется в console.log() функции:QML: индекс свойство делегата не распознается console.log()

onClicked: { 
    identities.qml_del_account(index); 
    console.log(index); 
} 
/*Application output:*/ 
qrc:/Accounts2.qml:74: ReferenceError: index is not defined 

линии 74 это:

console.log(index); 

Почему он работает для первой линии, но не работает на втором? Обе строки расположены в одной и той же функции javascript.

Полный код QML является:

Identities { 
    id: identities 
} 
ListView { 
      id: list_identities 
      width: list_area.width 
      height: 100 
      model: identities 
      delegate: Rectangle { 
        id: identities_delegate 
        height: 40 
        width: parent.width 
        Text { 
         id: identities_item 
         height: parent.height 
         anchors.left: parent.left 
         width: 100 
         text: email 
        } 
        Image { 
         source: "qrc:/images/dots-menu.png" 
         id: toolbtn_img 
         anchors.right: parent.right 
         width: 24 
         height: 24 
         MouseArea { 
          width: parent.width 
          height: parent.height 
          onClicked: { 
           identities.qml_del_account(index); 
           console.log(index); 
          } 
         } 
        } 
      } 
} 

Модель определена в C++ и contians функцию qml_del_account(), которая работает отлично, и я не жалуюсь об этом.

ответ

1

Мое предположение: qml_del_account удаляет запись модели для текущего делегата, которая впоследствии удаляется, поэтому журнал выполняется в контексте отсутствия существующей объектной модели.

Попробуйте изменить порядок ведения журнала и вызвать функцию модели.

В целом я также рекомендовал бы улучшить читаемость, обратившись к данным модели в делегатах через аксессуар model, например. model.index

+0

Ваша догадка абсолютно верна. большое спасибо! – Nulik