Sapui5 在根视图的onInit()内设置模型时出错-无错误/无日志
我试图在Sapui5 在根视图的onInit()内设置模型时出错-无错误/无日志,sapui5,jsonmodel,Sapui5,Jsonmodel,我试图在Main.view.xml(根视图)上设置一个新的JSONModel。 但它似乎停止在.setModel()。console.log(“after”)未记录 sap.ui.define([ "sap/ui/core/mvc/Controller", "jquery.sap.global", "sap/m/MessageToast", "sap/ui/model/json/JSONModel" ], function (Controller, JSON
Main.view.xml
(根视图)上设置一个新的JSONModel
。
但它似乎停止在.setModel()
。console.log(“after”)
未记录
sap.ui.define([
"sap/ui/core/mvc/Controller",
"jquery.sap.global",
"sap/m/MessageToast",
"sap/ui/model/json/JSONModel"
], function (Controller, JSONModel, MessageToast) {
"use strict";
return Controller.extend("sap.ui.bookedTimes.wt.controller.Main", {
onInit : function () {
var jModel = this.getOwnerComponent().getModel("zCatsTestJ");
var that = this;
jModel.attachRequestCompleted(function() {
console.log(that.getView());
var oViewModel= new JSONModel({workdate: "test"});
console.log("before");
that.getView().setModel(oViewModel, "view");
console.log("after");
console.log(that.getView().getModel("view"));
});
},
});
});
manifest.json中的条目
:
"sap.ui5": {
"rootView" : {
"viewName":"sap.ui.bookedTimes.wt.view.Main",
"id": "mainview",
"type": "XML"
},
根视图的onInit()
中是否存在问题
更新:
我应该添加xml.view的一部分。我将视图名称更改为“view1”,并记录了控制器中的所有内容。问题是我的观点仍然期待着一个日期
<Text text="{ path: 'view1>/workdate', type: 'sap.ui.model.type.Date', formatOptions: { pattern: 'dd.MM.yyyy' } }" />
在将此更改为文本后,它开始工作无论如何,最初的问题是定义的顺序
谢谢各位看来你们的进口已经关闭了。尝试这样修复它(注意
define([])
块)
现在您应该正确导入了JSONModel,并且不应该看到任何错误。导入模块的顺序与回调函数中参数的顺序不同。像这样更改它,然后重试
],函数(Controller、MessageToast、JSONModel){
现在控制台.log(“before”)
也不可用showing@RafaelLópezMartínez这是不正确的。-此的上下文不影响sap.ui.define([…])中定义的使用
@zerocool985您需要更正定义的顺序。它们需要匹配。因此,如果您定义sap/ui/core/mvc/Controller、sap/ui/model/json/JSONModel
您需要具有功能(Controller,JSONModel…
-之后,检查以确保JSON模型实际完成了请求,并且在附加事件处理程序后请求已完成。如果JSON模型未完成请求或在附加事件之前未完成请求,则代码将不会完成execute@Kyle我已经扔掉了“jquery.sap.global”
和“sap/m/MessageToast”
当我console.log(oViewModel)
时,我可以看到其中包含“test”数据的构造函数。仍然在之后是.getView().setModel(oViewModel,“view”)
什么也没发生anymore@RafaelLópezMartínez这是不正确的。-此的上下文不影响sap.ui.define([…])中定义的使用。
你是对的。我在其他地方犯了一个错误…我将删除我的评论
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel",
"sap/m/MessageToast"
], function (Controller, JSONModel, MessageToast) {
"use strict";
return Controller.extend("sap.ui.bookedTimes.wt.controller.Main", {
onInit : function () {
var jModel = this.getOwnerComponent().getModel("zCatsTestJ");
var that = this;
jModel.attachRequestCompleted(function() {
console.log(that.getView());
var oViewModel= new JSONModel({workdate: "test"});
console.log("before");
that.getView().setModel(oViewModel, "view");
console.log("after");
console.log(that.getView().getModel("view"));
});
},
});
});