我想绑定一个全局模型并在不同的xml视图中访问它,但它总是不显示任何内容。
在Controller中,我以这种方式绑定数据......
sap.ui.define([
'jquery.sap.global',
'sap/ui/core/mvc/Controller',
'sap/ui/model/json/JSONModel'
], function (jQuery, Controller, JSONModel) {
"use strict";
return Controller.extend("sap.ui.demo.controller.DatasourceManagement", {
onInit: function() {
var datasourcesModel = new JSONModel('/api/datasources');
sap.ui.getCore().setModel(datasourcesModel, 'datasources');
//this.getView().setModel(datasourcesModel,'datasources');
},
....
在View中我尝试以这种方式访问数据......
mvc:View xmlns="sap.m" xmlns:tnt="sap.tnt" xmlns:l="sap.ui.layout"
xmlns:mvc="sap.ui.core.mvc"
controllerName="sap.ui.demo.controller.DatasourceManagement">
<Page showHeader="false" enableScrolling="true" class="sapUiContentPadding test"
showNavButton="false">
<content>
<Table id="datasourceTable"
items="{path: 'datasources>',
sorter: {
path: 'id'
}}"
....
我的代码有什么问题?
-------编辑1 ------------- URL“/ api / datasources”返回一个条目数组:
[
{
"id": 1,
"name": "FTPSERVER",
"hostname": "test.de",
"port": 21,
"username": "username",
"password": "password"
},
{
"id": 2,
"name": "FTPSERVERasdasdasdadsads1111111",
"hostname": "test.de",
"port": 21,
"username": "username",
"password": "password"
},
{
"id": 3,
"name": "FTPSERVER",
"hostname": "test.de",
"port": 21,
"username": "username",
"password": "password"
}
]
答案 0 :(得分:1)
我认为这是因为您的表项绑定路径,特别是您应该将其更改为&#39;数据源&gt; / &#39;而不是&#39;数据源&gt;&#39;。
根据您显示的代码段,我假设&#34; / api / datasources&#34;返回条目的数组/映射。
假设HTTP请求返回非空数组(您应该在Developer Console中检查 - >网络选项卡),我看到代码中只有一个问题:绑定路径表格的项目是相对的。
在UI5中,绑定有两种类型:
通过获取模型中给定路径的对象,可以直接解析绝对绑定。另一方面,相对绑定相对于祖先指定的某个路径进行解析。如果没有其他祖先元素(绝对)绑定到此JSON模型的某些内容,则绑定将无法解析。
答案 1 :(得分:0)
主要问题是,如果将模型设置为核心,则组件的子项不会自动知道该模型。您可以更改此行为。以下是对遇到类似问题的人的回答:https://stackoverflow.com/a/42251431/5846045
同样作为Serban pointed out,绑定路径语法在末尾缺少/
以访问绝对路径中的数组。所以它应该是:datasources>
/
。
答案 2 :(得分:0)
现在我得到了解决方案......
当我将模型绑定到它工作的组件时:
this.getOwnerComponent().setModel(datasourcesModel, 'datasources');
并且在视图中我可以通过这种方式绑定模型:
<core:View xmlns="sap.m" xmlns:tnt="sap.tnt" xmlns:l="sap.ui.layout"
xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc"
controllerName="sap.ui.demo.controller.DatasourceManagement">
<Page showHeader="false" enableScrolling="true" class="sapUiContentPadding test"
showNavButton="false">
<content>
<Table id="datasourceTable"
items="{path: 'datasources>/',
sorter: {
path: 'id'
}}"
我非常感谢你的帮助......