我正在使用Blackberry 10 Cascades,我正在尝试使用ArrayDataModel
将数据加载到选择器中。我在网上阅读的所有文档都给了我与XMLDataSource
一起使用的示例,但是由于我的数据是JSON并来自实时源,我宁愿不必将其序列化为XML的性能影响。加载到XMLDataSource
(从我粗略的调查看起来似乎很不稳定)。
我有一些代码可以提供部分功能(正确的行数和列数),但是在尝试访问pickerItemData
属性时,结果始终未定义。
以下代码显示了部分功能,它改编自http://developer.blackberry.com/native/reference/cascades/bb_cascades_picker.html
控制台有一些调试输出,内容为
Picker: incorrect model, wrong columns number: 0
不幸的是,这对我没有任何意义,因为Picker
正在呈现正确的列数。似乎没有关于错误消息的任何文档。
import bb.cascades 1.2
Page {
Container {
leftPadding: 24.0
rightPadding: 24.0
topPadding: 12.0
bottomPadding: 12.0
controls: [
Picker {
id: picker
title: "Picker title"
expanded: true
rootIndexPath: []
dataModel: ArrayDataModel {
id: dataModel
}
pickerItemComponents: [
PickerItemComponent {
type: "item1"
content: Container {
background: Color.create(pickerItemData.background)
}
},
PickerItemComponent {
type: "item2"
content: Container {
Label {
text: pickerItemData.text
textStyle.color: Color.create(pickerItemData.color)
}
}
}
]
onCreationCompleted: {
dataModel.append([
{
"item1": [ {
"background": "#ff0000ff"
}, {
"background": "#ff00ff00"
},
{
"background": "#ffff0000"
}, {
"background": "#ff00ffff"
} ]
},
{
"item2": [
{
"text": "Item 1",
"color": "#ff888888"
},
{
"text": "Item 2",
"color": "#ff0000ff"
},
{
"text": "Item 3",
"color": "#ff00ff00"
},
{
"text": "Item 4",
"color": "#ff00ffff"
},
{
"text": "Item 5",
"color": "#ffff0000"
},
{
"text": "Item 6",
"color": "#ffff00ff"
},
{
"text": "Item 7",
"color": "#ffffff00"
},
{
"text": "Item 8",
"color": "#ffffffff"
} ]
} ]);
}
onSelectedValueChanged: {
var index0 = picker.selectedIndex(0);
var index1 = picker.selectedIndex(1);
console.log("Selection: " + index0 + ", " + index1);
}
}
]
}
}
通过JSON提供的数据结构与XMLDataSource
提供的数据结构相同。任何有关此问题的帮助或见解将不胜感激。