我正在尝试在QML中创建不同的上下文菜单,但我不知道它的正确语法是什么。我想做点什么:
contextActions: [
ActionSet {
title: "Action Set"
subtitle: "This is an action set."
actions: if (_corporate.currentView == 2) {
[ ActionItem { title: "Action 1" },
ActionItem { title: "Action 2" },
ActionItem { title: "Action 3" } ]
} else {
[ActionItem { title: "Action 4" },
ActionItem { title: "Action 5" },
ActionItem { title: "Action 6" }
]
}
} // end of ActionSet
] // end of contextActions list
这显然是错误的语法,那么正确的方法是什么?提前谢谢!
答案 0 :(得分:1)
也许是这样的:
ActionItem { title: _corporate.currentView == 2 ? "Action 1" : "Action 4" }
或者,如果您要检查更多值,请使用以下函数:
ActionItem {
title: getTitleForView(_corporate.currentView);
function getTitleForView(vid) {
switch (vid) {
case 1:
return "abc"
case 2:
return "qwerty"
}
}
}
答案 1 :(得分:1)
对我来说正确的方法(使我能够在不同的情况下拥有不同数量的上下文菜单项)是使用不同的元素,这些元素将根据上下文选择。
在我的情况下,我有一个列表,根据数据的类型,我可以在其中单独ListItemComponents
。在问这个问题时,我并不是太具体,对不起。
以下是正确答案,代码示例为:http://supportforums.blackberry.com/t5/Cascades-Development/Context-dependent-contextActions/td-p/2044783
那里缺少的是使用DataModel::itemType()
函数的示例(在这种情况下至关重要),所以这里有一个示例:https://developer.blackberry.com/cascades/documentation/ui/lists/groupdatamodel.html