【问题标题】:How i can define custom controller in my controller in sap ui?如何在 sap ui 的控制器中定义自定义控制器?
【发布时间】:2016-02-25 13:17:34
【问题描述】:

所以我们确定 sap 核心中有什么:

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/core/routing/History",
    "sap/ui/model/json/JSONModel"
], function (Controller,History,JSONModel) 

我的 sap 应用 ID:"sap.ui.test"。

所以我想将控制器连接到已经存在的控制器:

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/core/routing/History",
    "sap/ui/model/json/JSONModel",
    "sap/ui/test/webapp/controller/TopMenu"
], function (Controller,History,JSONModel,TopMenu)

我得到一个错误: Error: failed to load 'sap/ui/test/webapp/controller/TopMenu.js。 虽然路看起来是对的。屏幕截图中附有项目结构。

我不明白是否可以通过这种方式识别控制器?

【问题讨论】:

    标签: javascript model-view-controller controller sapui5


    【解决方案1】:

    你必须使用

    sap.ui.define([
       "sap/ui/core/mvc/Controller",
       "sap/ui/core/routing/History",
       "sap/ui/model/json/JSONModel",
       "sap/ui/test/controller/TopMenu.controller"
    ], function (Controller,History,JSONModel,TopMenu)
    

    这是因为旧的控制器命名约定:您的控制器必须命名为ABC.controller.jssap.ui.define 函数搜索文件并且不知道这个约定。它不知道您这次要加载控制器。

    【讨论】:

    • 谢谢,它工作!以及如何在另一个控制器中使用 TopMenu 类的方法?目前我收到错误:Uncaught TypeError: TopMenu.setActiveItem is not a function。我正在尝试这样做:onAfterRendering: function(){ TopMenu.setActiveItem('materData'); },
    • 您要导入的是 TopMenu 类。要使用它的实例方法,您必须实例化它,或者您可以将其用作基类。
    【解决方案2】:

    试试

    sap.ui.define([ "sap/ui/core/mvc/Controller", "sap/ui/core/routing/History", "sap/ui/model/json/JSONModel", "sap/ui/test/controller/TopMenu" ], function (Controller,History,JSONModel,TopMenu)

    您不需要告诉您的应用确切的路径,您已经在 Index.html 中这样做了

    (类似于data-sap-ui-resourceroots='{"sap.ui.test": "sap/ui/test/webapp"}'>

    【讨论】:

    • 不行,错误:Error: failed to load 'sap/ui/test/controller/TopMenu.js' from ./controller/TopMenu.js: 404 - Not Found
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多