我经常遇到某种主从细节情况,我尝试在主视图和详细视图中使用单个模型。
当您在列表中选择项目时,详细信息页面将直接绑定到列表中包含
out/
- appname-forge-win32-x64/
- - locales/
- - resources/
- - - app/
- - - electron.asar
的元素。路径可从绑定上下文中获得。每个人都很高兴:
.bindElement(path)
挑战在于列表页面有“添加”按钮。我创建了一个新对象并将其放入模型中。但是我如何找到路径呢?我没有上下文:
//click handler for list item:
var context = this.getBindingContext();
oDetailPage.bindElement(context.getPath());
oApp.toDetail(oDetailPage);
我搜索了//click handler for "add" button
var newStuff = {
propA: "foo",
propB: 13
};
oModel.setData(oModel.getData().concat(newStuff));
oDetailPage.bindElement(/* What??? */);
oApp.toDetail(oDetailPage);
方法但没有这样的东西
答案 0 :(得分:2)
嗨,不幸的是我无法测试这个,但我认为这应该有用
绑定路径几乎是指向集合中特定条目的指针。路径值取决于几个变量,例如模型的结构。
例如,如果Model数据如下所示:
{"results" : [
{propA: "foo",
propB: 13
},
{propA: "ber",
propB: 14
}]
}
你结束了
{propA: "newItem",
propB: 15
}
我相信你的绑定路径是
"/results/2"
您还可以使用类似
的内容查找最新的索引this.getModel("yourModel").getObject("results").length;
编辑 - 除非我不理解您的问题,否则您的新条目应该在模型的最后。
答案 1 :(得分:1)
这里有2个案例
//click handler for "add" button
var newStuff = {
propA: "foo",
propB: 13
};
// case 1: root of model data is an array
var oData = oModel.getProperty("/");
oData.push(newStuff);
oDetailPage.bindElement("/" + oData.length - 1);
// case 2: we appends to /results
var oData = oModel.getProperty("/results");
oData.push(newStuff);
oDetailPage.bindElement("/results/" + oData.length - 1);