我创建了一个 Web 服务并尝试使用 SAPUI5 中的 oData 协议绑定数据。
我创建了一个表:
createContent : function(oController) {
jQuery.sap.require("sap.ui.table.Table");
//Create table control with properties
var oTable = new sap.ui.table.Table({
width : "100%",
rowHeight : 50,
title : "Lst of Items",
selectionMode : sap.ui.table.SelectionMode.None
});
oTable.addColumn(new sap.ui.table.Column({
label : new sap.ui.commons.Label({
text : "PO Number"
}),
template : new sap.ui.commons.TextView({
text : "{PoNumber}"
}),
}
));
oTable.addColumn(new sap.ui.table.Column({
label : new sap.ui.commons.Label({
text : "Item"
}),
template : new sap.ui.commons.TextView({
text : "{PoItem}"
}),
}
));
//Filter …Run Code Online (Sandbox Code Playgroud) 我正在使用 SAPUI5 构建类似 Fiori 的应用程序。我已经成功构建了母版页面,在单击项目时,我传递了上下文并导航到详细信息页面。
母版页的上下文路径类似于/SUPPLIER("NAME"). in的函数App.controoler.js如下:
handleListItemPress: function(evt) {
var context = evt.getSource().getBindingContext();
this.myNavContainer.to("Detail", context);
// ...
},
Run Code Online (Sandbox Code Playgroud)
但我想知道如何context在“详细信息”页面中访问它。我需要这个,因为我需要使用它$expand来构建 URL 并将项目绑定到表。
如果我this.getView()在视图的控制器内部使用,我可以毫无问题地检索它。
如果我在控制器之外(例如在另一个视图的控制器中),如何检索视图?
我尝试sap.ui.core.Core().byId("<name of view>")但它返回undefined。
问题是:
当我在运行时添加行时,我试图使 TreeTable 中的节点保持展开状态。TreeTable 的默认行为是,当它发生某些情况时,它会再次呈现并且所有节点都会折叠。
API 只提供了保持第一级扩展的方法,但我也喜欢保持较低级别的节点扩展。我怎样才能做到这一点?
添加行之前:

添加一行后:

期待:

[编辑]
我已经尝试通过使用 Expand(iRowIndex) 来获得正确的行为,但就我而言,TreeTable 的生命周期(添加内容、重新渲染)没有帮助。
我在做什么:
我正在尝试使用拖放功能添加数据。当我们尝试将内容添加到 TreeTable 的特定位置时,我们必须获得父元素和子元素的正确位置。不幸的是,在添加上述内容后,第二个+级别被隐藏,这会扰乱我的拖放操作,因为表格行在折叠时具有不同的 ID。
基本上我需要一个像 ."setExpandFirstLevel(true)" 这样的 TreeTable 函数来处理所有其他级别。
是否可以声明一个类具有某些功能而不实现它们?
我需要这个,因为我创建了一个类,然后将其传递给一个 js 框架,该框架添加了几个函数。我也希望能够调用这些函数,而无需重新实现它们、重定向或转换或任何其他操作。
例子:
//example class
class AppComponent {
constructor() {}
}
//create class
var comp: AppComponent = new AppComponent();
//hand over to framework
fw.define("Component", comp);
//now I want to be able to call the added functions such as:
comp.setModel(/*some model*/);
Run Code Online (Sandbox Code Playgroud) 我目前正在为我的公司开发 MasterDetail 应用程序,该应用程序提供以节点表示的可扩展类别。
\n\n节点及其子节点与导航属性的绑定不是问题。但是,如果我想在上面的搜索字段中搜索某个组节点,它只会在四个最高节点之间进行过滤。它可以搜索第一层的节点,但无法找到第一层以下的节点。
\n树的绑定:
\n<Tree\n selectionChange="onSelectionChange"\n id="list"\n noDataText="{masterView>/noDataText}"\n busyIndicatorDelay="{masterView>/delay}"\n items="{path: \'/GroupNodes\',\n parameters : {\n expand: \'ChildGroupNodes\',\n navigation: {\n \'GroupNodes\': \'ChildGroupNodes\'\n }\n }\n }">\n <StandardTreeItem \n title="{Stext}"\n type="Navigation"\n press="onSelectionChange"/>\n</Tree>\nRun Code Online (Sandbox Code Playgroud)\n在搜索上:
\n onSearch: function(oEvent) {\n if (oEvent.getParameters().refreshButtonPressed) {\n this.onRefresh();\n return;\n }\n\n var sQuery = oEvent.getParameter("query");\n if (sQuery) {\n this._oListFilterState.aSearch = [new Filter("Stext", FilterOperator.Contains, sQuery)];\n } else {\n this._oListFilterState.aSearch = [];\n }\n this._applyFilterSearch();\n },\nRun Code Online (Sandbox Code Playgroud)\n_applyFilter搜索:
\n _applyFilterSearch: function() {\n var aFilters = this._oListFilterState.aSearch.concat(this._oListFilterState.aFilter),\n oViewModel = this.getModel();\n\n …Run Code Online (Sandbox Code Playgroud) 目前我正在我的页面中开发 SAPUI5 应用程序。我必须根据微服务的数据动态创建组合框。
\n\n我按照以下网址中的示例代码进行操作。\n查看源:https ://sapui5.hana.ondemand.com/test-resources/sap/m/ComboBox.html
\n\n但是,它在我的组合框中返回空
\n\n以下是我的示例代码。
\n\n$.ajax({\n url: "json/customers.json", \n dataType: \'json\',\n success: function(response){\n var data= response; \n console.log(data);\n var customerModel = new JSONModel(data);\n console.log(customerModel);\n oController.getView().setModel(customerModel, "customerJSON");\n var ExtensionForm = oController.getView().byId("Extension_Form");\n\n ExtensionForm.addContent(new sap.m.ComboBox(oController.getView().createId(\xe2\x80\x9cExtensionLabelId\xe2\x80\x9d), {\n items: {\n path: "{ComboBoxModel>/}",\n template: new sap.ui.core.Item({\n key: "{ComboBoxModel>CUSTOMER_NAME}",\n text: "{ComboBoxModel>CUSTOMER_NAME}"\n })\n },\n value : "{model2>/"+ keys[i] + "/fieldvalue}",\n enabled: false\n }));\n },\n error: function(error)\n {\n console.log("Error Message : " + JSON.stringify(error));\n }\n });\nRun Code Online (Sandbox Code Playgroud)\n 在演练步骤 7:JSON 模型示例中,应用程序显然按照文档运行,但我在控制台中看到以下错误:
错误:使用匿名define()调用的模块必须通过require()调用加载;它们不能通过脚本标签执行或嵌套到其他模块中。
在我未经训练的眼睛看来,我能找到的这条消息的唯一其他实例似乎是在处理完全不同的场景。
我已经尝试过 Firefox 和 Chromium、CDN 托管与本地托管、两个不同的 UI5 版本(1.77.0 和 1.79.0),都是缩小版和普通版,所以我想这确实是代码本身的问题。
会是什么呢?另外,我可以安全地忽略它吗?为什么?
我使用 SAP 标准库:Inbox。
\n在图书馆课程中S3.controller,点击附件图标是onTabSelect来执行事件,女巫使
this.fnDelegateAttachmentsCreation();\nthis.fnFetchDataOnTabSelect("Attachments");\nthis.fnHandleAttachmentsCountText("Attachments");\nthis.fnHandleNoTextCreation("Attachments");\nbreak;\nRun Code Online (Sandbox Code Playgroud)\nfnFetchDataOnTabSelect进行异步调用。在这次通话期间是fnHandleAttachmentsCountText已经执行,因此附件计数的更新发生在附件请求准备好之前。就附件请求而言,尚未执行任何标题更新。
屏幕截图上是 AttachmentCountText \xe2\x80\x9eAttachnents (1/1)\xe2\x80\x9c,它来自先前选择的项目。\n它应该是 \xe2\x80\x9eAttachnents (2/2)"。
\n\n此外,如果响应来得太快,则在收到请求的答案后,视图会更改为加载视图。\n如果附件列表是通过请求回调更新的,则不应第二次更新。
\n看起来,有一些东西正在加载,但请求已经完成。
\n\n如何扩展收件箱,以便在请求准备好后更新附件标题和内容?
\n使用 SAPUI5-版本:1.71.4
\n代码示例:https://plnkr.co/edit/KPLJXzI4n1L0fG4Z
<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:f="sap.f">
<App>
<pages>
<f:ShellBar />
<PageOrDynamicPage>
<!-- ... -->
</PageOrDynamicPage>
</pages>
</App>
</mvc:View>
Run Code Online (Sandbox Code Playgroud)
我还尝试将 ShellBar 添加为 App.view.xml 中定义的根视图元素的第一个内容,这会产生双垂直滚动条。
我还尝试在应用程序周围放置一个 Shell,而不是单独的 ShellBar,但该栏未显示:https://plnkr.co/edit/Tmk6vd5CF4IEZC2y。
sapui5 ×10
javascript ×2
odata ×2
ajax ×1
amd ×1
class ×1
sap-fiori ×1
sap-gateway ×1
treetable ×1
typescript ×1