如何指定条件ActionSet?

时间:2013-01-14 13:27:08

标签: qml blackberry-10

我正在尝试在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

这显然是错误的语法,那么正确的方法是什么?提前谢谢!

2 个答案:

答案 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