誰かが次のセットアップで何が間違っているのか説明してもらえますか?
アイデアは、ゲーム エンジンを engine.js で開発し、UI ロジックを qml ファイルで開発することです。
page.qml
Page {
id: page
SilicaGridView {
id: listView
model: ListModel {
id: roleList
Component.onCompleted: {
Engine.addRoles(roleList);
}
}
delegate: Rectangle {
id: delegate
border.color: model.selected ? Theme.highlightColor : Theme.primaryColor
Label {
text: qsTr(model.name)
}
MouseArea {
anchors.fill: parent;
onClicked: {
Engine.selectRole(model);
}
}
}
}
}
エンジン.js:
function Role() {
this.name = "role"
this.selected = false;
}
function addRoles(list) {
list.append(new Role());
list.append(new Role());
}
function selectRole(role) {
console.log(role.selected) // <-- false
role.selected = true;
console.log(role.selected) // <-- false
}
そのため、ページ上の要素をクリックすると、エンジンから selectRole が呼び出されます。奇妙な理由により、モデルで選択したプロパティを更新しても、実際にはモデルが更新されません。なぜこのようになっているのですか?