2013-09-25 43 views
0

我正在初始化另一個QML頁面的屬性。頁面屬性在onCreationCompleted中未正確初始化,黑莓10

我的第一個QML頁面的代碼 - page1.qml如下:

Page{ 
    id: page1 

    //Some code 

    Button{ 
     text: "Click Me" 
     onClicked: { 
      var page = nextPage.createObject(); 
      page.cost = netCost; //netCost is an int property of page1 and is calculated in the code 
      resvNav.push(page); //resNav is the id of the NavigationPane 
     } 
    }// Button ends 

    attachedObjects: [ 
     ComponentDefinition { 
       id: nextPage 
       source: "page2.qml" 
     } 
    ] 
}// page ends 

我的第二頁中的代碼 - page2.qml如下:

Page{ 
    id: page2 

    property int cost 
    property alias labeltext: label1.text 
    Container{ 
     Label{ 
     id: label1 
     } 
    }// Container ends 

    onCreationCompleted{ 
     console.debug(cost); 
     var totalCost = cost + 50; 
     labeltext = totalCost; 
    } 
}//Page ends 

現在的問題是,無論cost的值從page1.qml傳遞到page2.qml它的值如控制檯所示始終爲0,因此totalCost始終爲50. 當我使用代碼label1.text: cost,則顯示該屬性的正確值。

onCreationCompleted中使用的屬性是否未初始化?如果不是,那麼一旦頁面被推送,使用和/或修改屬性的方法是什麼?我試着給自定義JavaScript函數從onCreationCompleted,但它會產生相同的結果,即cost保持0

回答

1

根據你的代碼

var page = nextPage.createObject(); 
page.cost = netCost; 

您正在使用createObject創建頁面。當createObject完成時,將調用onCreationCompleted。那個時候的成本是0,所以TOTALCOST將是50

然後你被page.cost = netCost;

所以分配成本值,如果要計算正確的總費用值,那麼你應該實現onCostChanged()處理程序,並從onCreationCompleted移動代碼給這個處理程序。

+0

您的解決方案有效。謝謝。 – HumptyDumptyEIZ