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"));    
        });
    },
});
});