2017-07-06 92 views
0

我正在使用qml Loader组件将页面动态推入查看。现在我推送的页面有各种属性,我想从Loader组件本身访问它们。但是,我无法为这些属性创建别名。所以,我有类似的东西:如何访问加载器对象内的项目的属性

Loader { 
    id: loginLoader 
    source: "qrc:/pages/IdPinLoginPage.qml" 

    property alias hasNavBar: loginLoader.item.hasNavBar 
    property alias hasStatusBar: loginLoader.item.hasStatusBar 
} 

这会导致Invalid alias target location。我如何将这些属性重定向到Loader组件的父级别?

+2


也为访问加载项,您可以使用装载机的item财产? '属性bool hasNavBar:loginLoader.item!== null? loginLoader.item.hasNavBar:false(或init值)'应该就够了。 – sk2212

+0

我使用了别名,因为这些属性值可能会在运行时更改,但我想我总是可以使用'loginLoader.item。 ' – Luca

+0

那么,使用我的方法不会阻止属性绑定。 – sk2212

回答

0

我建议你使用sourceComponent而不是source Loader的属性,以便轻松地为装入的项目赋值/绑定值。为什么使用别名

Loader { 
    id: loader 
    sourceComponent: Component { 
     SampleItem { 
      foo: 13   //assign values to loaded item properties 
      bar: "aleyk!" 
     } 
    } 
} 

Text { 
    text: loader.item.bar //Access to loaded item properties 
} 

SampleItem.qml

import QtQuick 2.6 

Item { 
    property int foo: 0 
    property string bar: "salam"; 
}