0

Я успешно создал представление списка, которое заполняет созданный 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(); 
      } 
     } 
    ] 
     } 
    } 

} 

Я новичок в ежевике, и это мой первый проект ежевики. Пожалуйста, дайте мне знать, если это возможно, или если есть какой-либо другой способ достичь этого.

ответ

1

Посмотрите на это:

var curData = contactsData.data([0,0]) 

На данный момент contactsData не имеет данных пока вы не загрузили еще. Первый звонок

profileDataSource.load(); 

Я не уверен, почему вы использовали бы ListView для такой вещи.

+0

Я попытался установить curData после загрузки profileDataSource.load(), но он все еще показывает ту же ошибку. Какой еще метод предлагает Bojan? – Gamerlegend

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