列表或 Table 控件中的 SAPUI5 访问控件

SAPUI5 Access controls in List or Table Controls

我有一个 XML 视图,其中包含一个列表,该列表包含带有输入、组合框等的 CustomListItems。

现在我想在运行时操纵控件的属性,例如 setEnabled(true) 或 false。为此,我需要迭代列表的项目并访问控件。正确的?

如果我在列表上使用 getItems,我会收到一个 ListItemBase 数组。如何获取嵌入到 ListItem 的控件?

任何 help/hint 不胜感激。

ListItemBase 个对象 od List.getItems() 实际上是您的 CustomListItems。 您可以直接访问它们的所有属性和方法(在 JavaScript 中没有强制转换)。

var listItems = list.getItems();
for (var i = 0, len = listItems.length; i < len; i++){
  var controls = listItems[i].getContent();
  var input = controls[0];
  var comboBox = controls[1];
  // and so on.
}

但是对于你的第一个问题:如果你使用数据绑定来创建你的列表,那么你也应该为你的其他属性使用数据绑定,比如 enabled。您可以使用 expression binding or multipart binding together with a formatter function 来计算属性,例如从列表行的任何模型数据(相对绑定路径)和所有可用模型的任何其他数据(绝对绑定路径)启用的属性。

另外一个好的做法是创建一个专用的 viewModel - 一个简单的 JSONModel,代表您的视图的某些状态并且可以绑定到。

如果您需要一个例子,请告诉我们更多关于您想要完成的事情。