Последующие меры смежный вопрос hereНевозможно получить доступ к модели из ядра в sapUI5
По какой-то причине я не могу получить доступ к моей модели, на мой взгляд XML, когда он установлен через sap.ui.getCore(). SetModel(). Если я установлю его на this.getView(), у меня проблем нет.
мой взгляд XML
<mvc:View controllerName="ca.toronto.rcsmls.webapp.controller.Login"
xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" xmlns:l="sap.ui.layout">
<Page title="{i18n>loginPageTitle}">
<content>
<Panel id="loginPanel" busyIndicatorDelay="0"
headerText="{i18n>loginPanelTitle}" class="sapUiResponsiveMargin loginPanel"
width="auto">
<l:VerticalLayout width="100%">
<Input type="Text" placeholder="{i18n>loginUidHolder}" value="{/mlsUser/uid}" />
<Input type="Password" placeholder="{app>/Password}"
value="{/mlsUser/password}" />
<Button text="{i18n>loginButtonText}" press="doLogin"
class="sapUiSmallMarginEnd customBold" width="100%" />
</l:VerticalLayout>
</Panel>
</content>
</Page></mvc:View>
Мой контроллер JS содержит это для setModel()
onInit : function() {
sap.ui.getCore().setModel(new sap.ui.model.json.JSONModel("webapp/controller/app.json"), "app");
}
Опять же, если я поставил модель на this.getView() setModel.() Вместо getCore() XML и контроллер работают отлично. Я также добавил data-sap-ui-xx-bindingSyntax = "complex" к моему index.html, но это, похоже, не изменило ситуацию. Любая помощь будет оценена по достоинству.
Edited включить больше информации
Мои Component.js
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/model/json/JSONModel",
], function (UIComponent, JSONModel) {
"use strict";
return UIComponent.extend("ca.toronto.rcsmls.webapp.Component", {
metadata : {
manifest: "json"
},
init : function() {
// call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
// set data model
var oData = {
mlsUser : {
uid : "",
password : "",
}
};
var oModel = new JSONModel(oData);
this.setModel(oModel);
// create the views based on the url/hash
this.getRouter().initialize();
}
});
});
Мой manifest.json
{
"_version": "1.1.0",
"sap.app":
{
"_version": "1.1.0",
"id": "ca.toronto.rcsmls",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"applicationVersion":
{
"version": "1.0.0"
},
"ach": "CA-UI5-DOC"
},
"sap.ui":
{
"_version": "1.1.0",
"technology": "UI5",
"deviceTypes":
{
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes":
[
"sap_bluecrystal"
]
},
"sap.ui5":
{
"_version": "1.1.0",
"rootView": "ca.toronto.rcsmls.webapp.view.App",
"dependencies":
{
"minUI5Version": "1.30",
"libs":
{
"sap.m":
{
}
}
},
"config":
{
"authenticationService": "http://172.21.226.138:9080/RcsMlsSvc/jaxrs/user/authenticate/",
"assignedWorkService": "http://172.21.226.138:9080/RcsMlsSvc/jaxrs/mls/searchAssignedWork"
},
"models":
{
"i18n":
{
"type": "sap.ui.model.resource.ResourceModel",
"settings":
{
"bundleName": "ca.toronto.rcsmls.webapp.i18n.i18n"
}
}
},
"routing":
{
"config":
{
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "ca.toronto.rcsmls.webapp.view",
"controlId": "root",
"controlAggregation": "pages"
},
"routes":
[
{
"pattern": "",
"name": "login",
"target": "login"
},
{
"pattern": "work",
"name": "work",
"target": "work"
}
],
"targets": {
"login": {
"viewName": "Login"
},
"work": {
"viewName": "Work"
}
}
},
"resources":
{
"css":
[
{
"uri": "css/style.css"
}
]
}
}
}
Модель app.json
{
"BaseURL": "https://smp-pNNNNNNtrial.hanatrial.ondemand.com",
"ES1Root": "https://sapes1.sapdevcenter.com",
"AppName": "qmacro.myfirst",
"Username": "yourusername",
"Password": "yourpassword"
}
Я нашел пример, где работает связывание с сердечником here. Это гораздо более простое приложение. Я все еще пытаюсь выяснить, каковы различия между этим проектом и мином.
Я не могу сказать вам, почему он не работает (у нас есть та же проблема), но я могу рассказать вам об обходном пути: мы настраиваем большинство моделей в нашем 'manifest.json', а остальные в' Component.js'. Чтобы сделать их в глобальном 'Component.js', выполните' this.setModel (oModel, "app") 'после их инициализации. См. Эту страницу, например: https://help.sap.com/saphelp_uiaddon10/helpdata/en/32/5b8edafcfa4c9c8fbd42455a60e379/content.htm – Marc
@ Маркус, не возражаете ли вы опубликовать пример, чтобы проиллюстрировать ваш случай, когда он не работает? У меня никогда не было проблем с этим, см. Также мой пример кода в моем ответе ниже. Он должен работать нормально, иначе я думаю, что это ошибка в UI5 или в собственном коде. – Nabi
@Nabi as @ nistv4n указал, что это 'sap.ui.getCore()' вещь работает с небольшим материалом, но по какой-либо причине не в более сложных приложениях. Я попытаюсь создать более сложный пример, но для этого потребуется некоторое время с момента его создания. – Marc