Я успешно создал представление списка, которое заполняет созданный json-файл, который я создал сейчас. Я пытаюсь отредактировать элемент списка. Но у меня возникают проблемы с этим, я продолжаю получать ошибку TypeError: Результат выражения 'curData' [undefined] не является объектом. Ниже приведен пример кода, в котором я пытаюсь отредактировать список после создания страницы.Редактировать элемент списка в каскадах Blackberry QML
Это страница, на которой я загружаю вид списка
import bb.system 1.0
import bb.cascades 1.0
import bb.data 1.0
import Network.Communication 1.0
Page {
Container {
id: profilePage
layout: DockLayout {
}
ListView {
id: profileListView
dataModel: contactsData
listItemComponents: [
ListItemComponent {
id: myItem
type: "item"
CustomListItemProfilePage {
id: listCell
background: Color.create(ListItemData.color)
text: ListItemData.name
onClicked: {
console.log(listCell.text);
}
}
}
]
onTriggered: {
}
}
}
onCreationCompleted:
{
var curData = contactsData.data([0,0])
curData.name = curData.name + " : "+ _settings.getValueFor("loginUserName", "No login name");
contactsData.updateItem([0,0],curData)
console.log("on compleete LOADED:"+contactsData.data([0,0]).toString());
profileDataSource.load();
}
attachedObjects: [
GroupDataModel {
id: contactsData
sortingKeys: ["order"]
grouping: ItemGrouping.None
},
DataSource {
id: profileDataSource
source: "asset:///Model/ProfileDetails.json"
onDataLoaded: {
contactsData.clear();
contactsData.insertList(data);
}
onError: {
console.log("JSON Load Error: [" + errorType + "]: " + errorMessage);
}
}
]
}
Это мой пример файла JSON. Я пытаюсь заменить текст NAME с фактическим именем, которое я получаю после входа в системе, которая хранится в _settings.getValueFor («loginUserName», «Без названия Войти»)
[
{ "order": 1, "name": "NAME" ,"color":"#16A085" },
{ "order": 2, "name": "FIND FRIENDS" ,"color":"#2ECC71" },
{ "order": 3, "name": "INVITE" ,"color":"#3498DB" },
{ "order": 4, "name": "EDIT PROFILE" ,"color":"#34495E" }
]
Это является QML для моего пункта списка следует
import bb.cascades 1.0
import QtQuick 1.0
import "Model/floatConstants.js" as Item
Container {
property alias text: label.text
property TextStyleDefinition textColor:label.textStyle
signal clicked()
layout: DockLayout {
}
preferredHeight: Item.itemHeight
preferredWidth: 1000.0
Container {
background: Color.Transparent
horizontalAlignment: HorizontalAlignment.Center
verticalAlignment: VerticalAlignment.Center
Container {
horizontalAlignment: HorizontalAlignment.Center
verticalAlignment: VerticalAlignment.Center
Label {
id: label
text: "demo"
textStyle {
base: textColor.style
}
}
gestureHandlers: [
TapHandler {
onTapped: {
clicked();
}
}
]
}
}
}
Я новичок в ежевике, и это мой первый проект ежевики. Пожалуйста, дайте мне знать, если это возможно, или если есть какой-либо другой способ достичь этого.
Я попытался установить curData после загрузки profileDataSource.load(), но он все еще показывает ту же ошибку. Какой еще метод предлагает Bojan? – Gamerlegend