SAPUI5 TypeError:this.nav.to不是函数

时间:2014-07-24 09:07:05

标签: sapui5

我是SAPUI5

的新手

我尝试在主页中单击“平铺”时显示母版页。下面是我在事件处理程序中使用的代码。

var context = evt.getSource().getBindingContext();
this.nav.to("Master", context);

这里的问题是我遇到以下错误 TypeError:this.nav.to不是函数

请协助

2 个答案:

答案 0 :(得分:1)

您的上下文中的this是什么?这取决于您tilePressed方法的定义位置。如果它在控制器中定义,this将引用控制器。 如果它是静态定义的 - 您经常会在格式化程序函数中找到它 - 这将引用触发事件的控件。

变量this.nav是否已定义且适当初始化?它需要包含某种NavContainer,例如最外面的sap.m.Appsap.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);
}