我正在寻找一种方便的方法来从表格单元格中获取路径。
背景:需要实现一个搜索字段,允许过滤响应表的所有列。这里,路径需要作为过滤器对象的参数。
<Table items="{path: 'modelName>pathPart1/pathPart2'}">
<headerToolbar>
<Toolbar>
<Title text="titleText"/>
<SearchField search="searchInTable"/>
</Toolbar>
</headerToolbar>
<columns>
<Column>
<Text text="column1"/>
</Column>
<Column>
<Text text="column2"/>
</Column>
</columns>
<ColumnListItem>
<Text text="{modelName>cellName1}"/>
<Text text="{modelName>cellName2}"/>
</ColumnListItem>
</Table>
searchInTable: function(event) {
var table = event.getSource().getParent().getParent();
var query = event.getParameters("query");
table.getBinding("items").filter(this.getFilters(table, query));
},
getFilters: function(table, query) {
var aFilters = [];
var items = table.getItems();
// Loop through items aggregation and populate filter object
jQuery.each(items, function(i, oItem) {
// Get path from cells (e.g. cellName1)
var sPath = oItem.mAggregations.cells[i].mBindingInfos.text.binding.sPath;
var sOperator = FilterOperator.EQ;
var sValue1 = query;
var oFilter = new Filter(sPath, sOperator, sValue1);
aFilters.push(oFilter);
});
return aFilters;
},
我们可以用更方便,更健壮的方法替换这部分吗?
var sPath = oItem.mAggregations.cells[i].mBindingInfos.text.binding.sPath;
正如您所注意到的,我正在尝试接收遍历整个对象的sPath
。但是,它在所有情况下都不起作用,因为对象的结构可能会改变。我打赌有更好的方法可用。但是,我在这里挣扎了一下。
有什么想法吗?
编辑:我想让路径指向表中的text属性。在这个样本中,它将是:cellName2
答案 0 :(得分:0)
我现在正打电话,所以我无法测试它,但它是这样的
oItem.getCells()[i].getBindingContext().getPath()
getCells()来自ColumnListItem API。
ODataListBinding API中的另外两个......或类似的东西......
如果你在API中潜水一下,你会发现它
编辑:我认为你应该在获取上下文时提供模型名称。但我不记得了......
oItem.getCells()[i].getBindingContext("modelName").getPath()
尝试使用和不使用它...
EDIT2:您有代码段http://jsbin.com/votaxiyedi/edit?html,output
这就是你所需要的:
oItem.getBindingContext("odata").getPath() + "/" + oItem.getCells()[0].getBinding("text").getPath();