sap.m.Table工厂功能与"这"查看上下文

时间:2017-01-13 15:54:25

标签: javascript sapui5

如何将视图的绑定设置为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视图之外执行工厂函数的文档。

谢谢大家。

1 个答案:

答案 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", ...)的简写)。