如何将视图的绑定设置为sap.m.Table的工厂函数?
表以这种方式声明:
<Table id="responsivetreetable" headerText="Collections" mode="SingleSelectMaster"
items="{ path:'/', model:'CollectionTree', factory:'.collectionTreeFactory'}">
在控制器中我以这种方式实现了collectionTreeFactory函数:
collectionTreeFactory: function(id, context) {
在工厂函数内部,当我使用变量this时,它指的是工厂上下文而不是视图上下文。我怎样才能实现这个目标? 我的第一个想法是使用.bind(this)函数,但我没有找到任何关于如何在xml视图之外执行工厂函数的文档。
谢谢大家。
答案 0 :(得分:1)
通常,工厂函数this
会自动绑定到控制器。您可以查看他的小提琴(查看控制台以查看this
值):https://jsfiddle.net/93mx0yvt/33/。
然而,您可以从控制器中绑定表的项聚合,并将您想要的任何函数作为工厂函数传递。如您所说,您可以使用.bind
函数显式设置this
上下文的值。您可以在此处找到示例:https://jsfiddle.net/93mx0yvt/34/。
相关的代码段如下:
oTable.bindItems({
path: "/",
model: "CollectionTree",
factory: this.collectionTreeFactory.bind(this)
});
查看bindAggregation documentation了解详情(bindItems
只是bindAggregation("items", ...)
的简写)。