如何在MVC模式中创建Model类的实例-SapUI5

问题描述 投票:0回答:1

我目前正在尝试在我的SAPUI5 / Fiori项目中实现Model-View-Controller。

我设法用[new sap.ui.core.mvc.Controller('controller.js')创建控制器的实例

这不适用于模型(sap.ui.core.mvc不包含模型属性)。

现在,我正在寻找一种从Controller调用模型函数以获取数据的方法。

我已经尝试过此代码:oObjModel = new sap.ui.mode.Model(),使用它我无法从模型中调用函数。

javascript model-view-controller sapui5
1个回答
1
投票

我建议您查看SAPUI5文档站点上的walkthrough。它显示了如何以正确的方式初始化MVC的所有方面。


SAPUI5中的模型属于不同的类,以支持不同形式的数据。例如,有JSONModelXMLModelODataModel

因此,要创建模型,您需要首先确定所需的模型的特定类型并使用其特定的构造函数。例如,如果您具有JSON数据(或只是一个JavaScript对象),则可以使用JSONModel

JSONModel

注意,以上代码假定您正在按照推荐的方式使用模块,并且该代码用var yourData = { "hello": "world" }; var oModel = new JSONModel(yourData); sap.ui.define包裹,其中将模块sap.ui.define分配给变量sap.ui.requiresap.ui.require显示此正确的使用模式。不建议像下面那样直接访问构造函数:

sap/ui/model/json/JSONModel

您创建控制器的方式也不正确。您最好让视图通过为其提供一个JSONModel来实例化控制器,如The walkthrough所示。

// Also probably works, but not the recommended way
var oModel = new sap.ui.model.json.JSONModel(yourData);

如果需要从代码手动实例化控制器,请使用此:

controllerName

这再次假设您已将模块walkthrough for Controllers链接到变量<mvc:View xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" controllerName="name.of.your.controller"> <!-- ... --> </mvc:View>

在版本1.56之前,您可以使用现在不建议使用的Controller.create({ name: "name.of.your.controller" }).then(function(oController) { // Do something with oController }); 函数来创建控制器:

sap/ui/core/mvc/Controller

请注意,这两个示例均以Controller的形式异步加载控制器,因此框架建议您仅使用异步。实际上,新的加载方式甚至没有提供同步加载选项。

© www.soinside.com 2019 - 2024. All rights reserved.