每次打开页面时 QML AppSwitch 发送 onCheckedChanged 信号?
QML AppSwitch sending onCheckedChanged signal each time page is opened?
我有一个 AppSwitch
,用于我应用程序中的 'activate/deactivate' 用户帐户,它的检查状态是从数据库中读取的,它按预期工作,同时更改了开关和文本取决于每个用户的布尔值。
我的问题是
每次我打开带有 AppSwitch
的页面时,它都会发送 onCheckedChanged
信号 - 反过来向用户发送通知,他们的帐户已被激活?我曾计划通过推送通知通知用户他们的帐户处于活动状态,但不希望每次管理员移至他们的页面时都发送此消息!
我正在使用 Felgo(以前称为 V-Play)进行开发,AppSwitch
文档的 link 是:
Felgo AppSwitch
我的代码是:
Rectangle {
width: parent.width / 2
height: parent.height
Column {
id: column
anchors.fill: parent
AppButton {
id: groupStatusText
width: parent.width
height: parent.height / 2
}
AppSwitch {
id: editStatus
knobColorOn: "#b0ced9"
backgroundColorOn: "#81b1c2"
checked: {
//userListItem is the current profile details of the user page
if(userListItem.groupStatus === 1) {
groupStatusText.text = "Deactivate this user"
}
else if(userListItem.groupStatus === 0) {
groupStatusText.text = "Activate this user"
}
}
onCheckedChanged: {
if(editStatus.checked === true) {
//the signal which sends to my database on updating the value,
//works as intended but sends signal each time page is created?
detailPage.adminEditGroupStatus(1)
} else {
detailPage.adminEditGroupStatus(0)
}
}
}
}
onCheckedChanged
信号在页面加载的每个实例上触发是否正常?或者我该如何修改它,使其仅在用户更改时触发!?
感谢您的帮助!
添加一个条件以确保在组件完全初始化之后发送信号(包括在 checked
属性 上创建绑定之后)。
您可以在开关上添加一个布尔值 属性 :
AppSwitch {
property bool loaded: false
Component.onCompleted: loaded = true
onCheckedChanged: {
if (loaded) {
// notify user
}
}
}
或者简单地使用 state
:
AppSwitch {
Component.onCompleted: state = "loaded"
onCheckedChanged: {
if (state === "loaded") {
// notify user
}
}
}
我有一个 AppSwitch
,用于我应用程序中的 'activate/deactivate' 用户帐户,它的检查状态是从数据库中读取的,它按预期工作,同时更改了开关和文本取决于每个用户的布尔值。
我的问题是
每次我打开带有 AppSwitch
的页面时,它都会发送 onCheckedChanged
信号 - 反过来向用户发送通知,他们的帐户已被激活?我曾计划通过推送通知通知用户他们的帐户处于活动状态,但不希望每次管理员移至他们的页面时都发送此消息!
我正在使用 Felgo(以前称为 V-Play)进行开发,AppSwitch
文档的 link 是:
Felgo AppSwitch
我的代码是:
Rectangle {
width: parent.width / 2
height: parent.height
Column {
id: column
anchors.fill: parent
AppButton {
id: groupStatusText
width: parent.width
height: parent.height / 2
}
AppSwitch {
id: editStatus
knobColorOn: "#b0ced9"
backgroundColorOn: "#81b1c2"
checked: {
//userListItem is the current profile details of the user page
if(userListItem.groupStatus === 1) {
groupStatusText.text = "Deactivate this user"
}
else if(userListItem.groupStatus === 0) {
groupStatusText.text = "Activate this user"
}
}
onCheckedChanged: {
if(editStatus.checked === true) {
//the signal which sends to my database on updating the value,
//works as intended but sends signal each time page is created?
detailPage.adminEditGroupStatus(1)
} else {
detailPage.adminEditGroupStatus(0)
}
}
}
}
onCheckedChanged
信号在页面加载的每个实例上触发是否正常?或者我该如何修改它,使其仅在用户更改时触发!?
感谢您的帮助!
添加一个条件以确保在组件完全初始化之后发送信号(包括在 checked
属性 上创建绑定之后)。
您可以在开关上添加一个布尔值 属性 :
AppSwitch {
property bool loaded: false
Component.onCompleted: loaded = true
onCheckedChanged: {
if (loaded) {
// notify user
}
}
}
或者简单地使用 state
:
AppSwitch {
Component.onCompleted: state = "loaded"
onCheckedChanged: {
if (state === "loaded") {
// notify user
}
}
}