- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试在我的 SAPUI5/Fiori 项目中实现模型- View - Controller 。
我成功地创建了一个 Controller 实例:new sap.ui.core.mvc.Controller('controller.js')
这不适用于模型(sap.ui.core.mvc
不包含模型属性)。
现在我正在寻找一种从 Controller 调用模型函数来获取数据的方法。
我已经尝试过此代码:oObjModel = new sap.ui.mode.Model()
,使用此代码我无法从我的模型调用函数。
最佳答案
我建议您查看walkthrough在 SAPUI5 文档站点上。它展示了如何以正确的方式初始化 MVC 的所有方面。
<小时/>SAPUI5 中的模型分为不同的类,以支持不同形式的数据。例如,有 JSONModel
、XMLModel
、ODataModel
等。
因此,要创建模型,您需要首先确定您需要的模型的具体类型并使用其具体的构造函数。例如,如果您有 JSON 数据(或只是 JavaScript 对象),则可以使用 JSONModel
:
var yourData = { "hello": "world" };
var oModel = new JSONModel(yourData);
请注意,上面的代码假设您遵循推荐的方式使用模块,并且此代码用 sap.ui.define
包装。或sap.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);
您创建 Controller 的方式也不正确。您最好通过为 View 提供 controllerName
来让 View 实例化 Controller ,如 walkthrough for Controllers 中所示。 .
<mvc:View xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" controllerName="name.of.your.controller">
<!-- ... -->
</mvc:View>
如果您需要从代码手动实例化 Controller ,请使用:
Controller.create({ name: "name.of.your.controller" }).then(function(oController) {
// Do something with oController
});
这再次假设您将模块sap/ui/core/mvc/Controller
链接到变量Controller
。
在版本 1.56 之前,您可以使用现已弃用的 sap.ui.controller
函数来创建 Controller :
sap.ui.controller("name.of.your.controller", null, /*async=*/true).then(function(oController) {
// Do something with oController
});
请注意,这两个示例都异步加载 Controller ,如 synchronous XHR is being globally deprecated outside of Workers ,因此框架建议您仅使用异步。事实上,新的加载方式甚至没有提供同步加载的选项。
关于javascript - 如何在MVC模式中创建模型类的实例 - SapUI5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58587559/
我是一名优秀的程序员,十分优秀!