如何从外部获取sap.m.Select的selectedKey?

How to get selectedKey of sap.m.Select from outside?

拥有这个 select 控件:

new Select("id", {
  items: {
    path: "/cards",
    template: new ListItem({
      key: "{Kunnr}",
      text: "{Descrip}"
    }),
  },
});

我需要它能够获得它的 selected 键,但不能在更改事件中。我需要从外部获取它(另一个功能)。

我试过使用 ID,但结果是 undefined

您的问题缺少一些信息,主要是关于如何将 oSelectMarca 添加到您的视图。这会影响它在您的应用程序中的可用方式。有两个地方可以通过Id获取东西:

this.getView().byId('id');
sap.ui.getCore().byId('id');

您必须检查它是哪一个...另一种选择是将该模型添加到您的视图而不是 oSelectMarca,在这种情况下您的视图和您的 select 可以共享数据.但这又取决于您如何将 select 添加到屏幕。

取决于你需要在哪里使用它你可以这样做:

this.oSelectMarca = new sap.m.Select('id',{});
this.oSelectMarca.setModel(myModel);

或者如果您将在另一个控制器中使用它,请尝试:

sap.ui.getCore().oSelectMarca = new sap.m.Select('id',{});
sap.ui.getCore().oSelectMarca.setModel(myModel);

尝试在 selectedKey 中使用双向数据绑定,这有助于保持 MV* 模式。

new Select({
  selectedKey: "{/selectedCard}" // <-- It's TwoWay
  items: {
    path: "/cards",
    template: new ListItem({
        key: "{Kunnr}",
        text: "{Descrip}"
    }),
  },
});

我假设默认模型可以跨应用程序访问。因此,只要您可以访问该模型,就可以通过 myModel.getProperty("/selectedCard");

获取所选密钥

我通过使用 sap 核心从外部访问属性解决了这个问题:

var myvar = sap.ui.getCore().getModel("marcas");
var selectedKey= myvar.getProperty('/cards/Kunnr');