2015-04-29 4 views
1

Я пытаюсь вызвать функцию, которая определена внутри элемента Flickable, но, похоже, невозможно получить к ней доступ по id. Следующий код создает ReferenceError: flickable is not definedtab.getValues(), когда называется:Доступ Флик из родительского элемента

import QtQuick 2.4 

Tab { 
    id: tab 
    function getValues() { 
     flickable.getValues() 
    } 
    Flickable { 
     id: flickable 
     clip: true 
     flickableDirection: Flickable.VerticalFlick 
     contentHeight: column.height 
     topMargin: 2 * pxPermm 
     function getValues() { 
      console.log("flickable.getValues() called") 
     } 
     Column { 
      id: column 
      // some content 
     } 
    } 
} 

Как еще я должен получить доступ к Flickable элемента? Функция getValues ​​() должна быть помещена внутри Flickable, потому что ей необходимо получить доступ к элементам, расположенным внутри столбца.

ответ

2

Это проблема с объектом Tab. Это Loader, для которого по умолчанию установлено значение sourceComponent. Когда вы помещаете в него элемент Flickable, он равен converted* компоненту и назначается. Когда объект Tab рассматривается, он создает свой Flickable объект, который можно получить доступ через item собственности:

function getValues() { 
    if(tab.active) 
    tab.item.getValues(); 
    else 
    console.log("Tab is not viewed so item does not exists."); 
} 

Это Flickable объект унаследовали, но другой контекст, чем ваш Tab объекта. Это значит, что вы можете получить доступ к tab от flickable, но не flickable от tab.

Смежные вопросы