3

我使用以下代码获取 sap.ui.commons.TreeNode 并选择它。

var newNode = this.tree.getNodes()[typeIdx].getNodes()[typeArray.length - 1];
newNode.select();

不幸的是,什么都没有发生。返回 true时newNode.getIsSelected(),不执行任何处理程序(既不在树上选择也不在节点上选择)。

PS我确定newNode.getSelectable()是真的。

有人成功使用 TreeNode 的 select() 方法吗?

代码示例

这是一个例子

添加元素确实会突出显示该元素,但仅在使用鼠标单击时才会显示警报。

4

3 回答 3

2

这是一个如何工作的示例。

这是我们要在节点选择上调用的函数:

var sel = function(oEvent) {
    console.log(oEvent.getSource().getText() + " selected");
};

这是带有一些节点的树,节点 1.1 和 1.2 有处理程序:

new sap.ui.commons.Tree("tree", {
    nodes: [
        new sap.ui.commons.TreeNode({
            text: "1",
            nodes: [
                new sap.ui.commons.TreeNode({
                    text: "1.1",
                    selected: sel
                }),
                new sap.ui.commons.TreeNode({
                    text: "1.2",
                    selected: sel
                })
            ]
        }),
        new sap.ui.commons.TreeNode({
            text: "2"
        })
    ]
}).placeAt("content");

当我们这样做时(根据您的示例):

newNode = sap.ui.getCore().byId("tree").getNodes()[0].getNodes()[0]
newNode.select()

我们得到

1.1 selected

在控制台中,该节点被突出显示。

于 2014-02-21T09:34:10.947 回答
1

阅读了确切的要求(onSelect未触发事件)后,我认为缺少两件事:

  1. fireSelected事件未明确触发
  2. select事件是在Tree元素而不是TreeNode模板上设置的

我已将您的示例更新为新版本:http: //jsbin.com/hososexu/7/edit

于 2014-02-24T11:06:44.033 回答
1

你能试试newNode.setIsSelected(true);这对我有用吗

最好的,罗宾

于 2014-02-20T15:51:27.153 回答