1

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

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

4

2 回答 2

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"
      }
     }
    }
于 2013-01-14T15:56:25.623 回答
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

于 2013-01-15T00:11:28.043 回答