我是SAPUI5
我尝试在主页中单击“平铺”时显示母版页。下面是我在事件处理程序中使用的代码。
var context = evt.getSource().getBindingContext();
this.nav.to("Master", context);
这里的问题是我遇到以下错误 TypeError:this.nav.to不是函数
请协助
答案 0 :(得分:1)
您的上下文中的this
是什么?这取决于您tilePressed
方法的定义位置。如果它在控制器中定义,this
将引用控制器。
如果它是静态定义的 - 您经常会在格式化程序函数中找到它 - 这将引用触发事件的控件。
变量this.nav
是否已定义且适当初始化?它需要包含某种NavContainer
,例如最外面的sap.m.App
和sap.m.SplitApp
。
另请查看此article on the usage of this in JavaScript和这个非常方便的jQuery函数jQuery.proxy
答案 1 :(得分:1)
this.nav.to()
和this.nav.back()
函数不是 在App.controller.js中定义。您需要编写以下代码 在App.controller.js
中,以便编译器识别函数 被召唤。
to : function (pageId, context) {
var app = this.getView().app;
// load page on demand
var master = ("Master" === pageId);
if (app.getPage(pageId, master) === null) {
var page = sap.ui.view({
id : pageId,
viewName : "ProjectPath.view." + pageId,
type : "XML"
});
page.getController().nav = this;
app.addPage(page, master);
jQuery.sap.log.info("app controller > loaded page: " + pageId);
}
// show the page
app.to(pageId);
// set data context on the page
if (context) {
var page = app.getPage(pageId);
page.setBindingContext(context);
}
},
back : function (pageId) {
this.getView().app.backToPage(pageId);
}