我正在尝试在HANA XS服务器上的UI5应用程序中实现文件上载.我找不到很多信息怎么做 - 有人有个主意吗?
所以基本上我的问题是我有一个页面:
var page1 = new sap.m.Page({
title: "Something",
enableScrolling : true,
content : [
oTable = new sap.m.Table("items", {
columns : [
new sap.m.Column({
styleClass : "name",
hAlign : "Left",
header : new sap.m.Label({
text : "firstColumn"
})
})
]
})]
});
var template = new sap.m.ColumnListItem({
type : "Navigation",
cells : [
new sap.m.Label({
text : "{name}"
})
]
});
template.attachPress(function(oEvent){
var selectedRowContext = oEvent.getParameter("item");
alert(selectedRowContext);
});
Run Code Online (Sandbox Code Playgroud)
在这里,我想获得selectedRowContext,我不知道如何?
谢谢
我有那个代码.(https://openui5.hana.ondemand.com/#test-resources/sap/ui/layout/demokit/Grid.html)
var oGrid1 = new sap.ui.layout.Grid({
hSpacing: 1,
vSpacing: 1,
content: [
new sap.ui.commons.TextView({
text : 'Text spanned over 4 cols on large, 6 cols on medium, and 12 cols on small screens.',
layoutData : new sap.ui.layout.GridData({
span : "L4 M6 S12"
})
}),
new sap.ui.commons.TextView({
text : 'Text spanned over 4 cols on large, 6 cols on medium, and 12 cols on small screens.',
layoutData : new sap.ui.layout.GridData({
span : "L4 M6 S12"
})
}),
new sap.ui.commons.TextView({ …Run Code Online (Sandbox Code Playgroud) 看一下HANA上提供的一些SAPUI5代码,我注意到一些SAP开发人员使用了WebStorm甚至RubyMine.我还听说客户站点上的其他各种开发人员使用WebStorm将代码检入ABAP存储库.
HANA和ABAP存储库在技术上看起来都是专有的.将SAPUI5代码与HANA和ABAP repos同步的默认方法似乎是使用Eclipse或基于Eclipsed的HANA Studio,通过安装的SAP交付插件.
我搜索并找不到任何插件或帮助您如何轻松地登录和退出HANA或ABAP仓库,而不是使用Eclipse或Orion.
对于HANA,您可以使用类似SAP HANA部署Shell的内容将Github置于中间位置,并且在ABAP堆栈上您可以/ UI5/UI5_REPOSITORY_LOAD手动上载,我已经听说过开发人员通过监听反向设计eclipse使用的服务的替代方案HTTP流量或解压缩插件.
我的问题是,其他人如何使用Webstorm在团队中开发SAPUI5应用程序,以及如何将代码与SAP存储库同步?
在SAPUI5/OpenUI5 xmlfragment文档中,第三个参数是用于处理片段中的操作的控制器.
这对于按下按钮等的对话框片段至关重要.
大部分时间我都看到过这个实例化为this或sap.ui.getCore().byId('<element>').getController())
请参阅Fragment中的示例未获得正确的Controller
由于特定对话框的复杂性,我希望有一个单独的控制器.
我已经环顾四周并进行了一些尝试,但到目前为止还没有成功.
我已经在github上使用了一个工作示例this.
但我想实例Dialog.js化为Dialog.fragment.xmlfrom 的控制器initial.view.controller
任何接受者?
很高兴收到拉请求.
示例的Crux如下(这是initial.controller.js):
sap.ui.controller("sc.test.view.initial", {
oDialog: null,
openTestDialog: function(){
console.log("in open dialog");
// instantiate the other controller
var oDialogController = new sc.test.view.Dialog();
// this next commented line is the 'normal' way to do it
// oDialog = new sap.ui.xmlfragment( "sc.test.view.Dialog", this); //oDialogController);
// this is what I would like to achieve
oDialog = new …Run Code Online (Sandbox Code Playgroud) 我有一个OpenUI5表单,包含许多Inputcontrols.这些Inputcontrols使用OpenUI5 DataBinding绑定到模型,如文档中所述.例如:
new sap.m.Input({
value: {
path: "/Position/Bezeichnung",
type: new sap.ui.model.type.String(null, {
minLength: 1,
maxLength: 128
})
}
})
Run Code Online (Sandbox Code Playgroud)
如上例所示,我在stringlength上使用约束.当用户更改输入的值时,将触发验证,并根据Validationresult 调用此处描述的功能之一.在这些函数中,我正在设置控件的ValueState,如下所示:
setupValidation: function() {
var oCore = sap.ui.getCore();
oCore.attachValidationError(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error);
});
oCore.attachValidationSuccess(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.None);
});
oCore.attachFormatError(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error);
});
oCore.attachParseError(function (oEvent) {
oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error);
});
},
Run Code Online (Sandbox Code Playgroud)
我们假设绑定的模型变量是初始的.我正在加载视图,属性值被解析并显示为空.尽管未满足约束,但未调用Validationerror/Parseerror方法.这似乎是OpenUI5的标准行为.只有控件中的更改才会被验证.
现在让我们假设我有一个提交按钮,并且Inputcontrol的值仍为空.当用户点击提交按钮时,我想为我的视图的所有子控件触发DataBinding Validation.这将验证上述输入并导致错误.
我的问题是:如何触发视图中所有子控件的数据绑定验证?
关于SO的另一个问题是海报要求定义必要字段的方法.建议的解决方案是在控件上调用getValue()并手动验证值.我认为这有点麻烦,因为形成和约束信息和逻辑已经存在.
我观看了一些关于导航+在视图之间传递数据的教程,但它在我的情况下不起作用.我的目标是实现以下目标:
导航工作完美,详细信息页面显示,但数据绑定似乎不起作用(没有数据显示)我的想法是将JSON字符串传递给详细信息页面.我怎样才能做到这一点?还是有更优雅的方式?
这是迄今为止的代码:
MainView控制器
sap.ui.controller("my.zodb_demo.MainView", {
onInit: function() {
var oModel = new sap.ui.model.json.JSONModel("zodb_demo/model/products.json");
var mainTable = this.getView().byId("productsTable");
this.getView().setModel(oModel);
mainTable.setModel(oModel);
mainTable.bindItems("/ProductCollection", new sap.m.ColumnListItem({
cells: [new sap.m.Text({
text: "{Name}"
}), new sap.m.Text({
text: "{SupplierName}"
}), new sap.m.Text({
text: "{Price}"
})]
}));
},
onDetailsPressed: function(oEvent) {
var oTable = this.getView().byId("productsTable");
var contexts = oTable.getSelectedContexts();
var items = contexts.map(function(c) {
return c.getObject();
});
var app = sap.ui.getCore().byId("mainApp");
var page = app.getPage("DetailsForm");
//Just to check if the selected JSON String is correct …Run Code Online (Sandbox Code Playgroud) 有什么方法/最佳实践来隐藏SAPUI5中用户的不可用页面?
让我们来看一个例子。我有一个带有用户登录页面的复杂应用程序。客户可以在此处登录该应用程序,并从后端系统检索其角色数据。基于这些角色,不允许某些用户创建新对象。只有登录的用户才能看到应用程序页面。我正在使用路由,因此编辑等功能也可以通过直接链接访问。
当前,我正在Component.js中使用onRouteMatched事件处理程序,该事件处理程序将检查当前的用户会话存储。如果未找到用户会话,它将请求重定向到登录页面。
问题在于,在导航到登录页面之前,它会显示请求的页面一到两秒钟。真的很丑。
我应该在哪里实现这种功能?此用例是否有任何钩子方法?
我认为我需要在显示与给定路由匹配的视图并将调用重定向到登录页面之前调用的hook方法。不幸的是,我在本主题中找不到任何有用的文档。
谢谢!
我真的不知道下面的属性controlAggregation用于路由SAPUI5应用程序.没有带有该ID的元素.我在这里找到的演示应用程序中找不到任何"页面"的引用: SAPUI5路由演示
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "sap.ui.demo.nav.view",
"controlId": "app",
"controlAggregation": "pages", // what does this do?
"transition": "slide",
"bypassed": {
"target": "notFound"
}
Run Code Online (Sandbox Code Playgroud)
观点定义如下 - 没有提到'页面'
<mvc:View
controllerName="sap.ui.demo.nav.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc"
displayBlock="true">
<App id="app"/>
</mvc:View>
Run Code Online (Sandbox Code Playgroud)
和
<mvc:View
controllerName="sap.ui.demo.nav.controller.Home"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Page title="{i18n>homePageTitle}" class="sapUiResponsiveContentPadding">
<content>
<Button id="displayNotFoundBtn" text="{i18n>DisplayNotFound}" press="onDisplayNotFound" class="sapUiTinyMarginEnd"/>
</content>
</Page>
</mvc:View>
Run Code Online (Sandbox Code Playgroud) 对于以下SAPUI5路由方法之间的区别有一个示例感到高兴:
sap.ui.core.routing.Route:
attachMatched()attachPatternMatched()sap.ui.core.routing.Router:
attachRouteMatched()attachRoutePatternMatched()API说明了什么attachMatched(),attachPatternMatched()没有任何区别。
API表示attachRouteMatched():
将event-handler附加
fnFunction到routeMatchedthis 的事件上sap.ui.core.routing.Router。
API表示attachRoutePatternMatched():
将event-handler附加
fnFunction到routePatternMatchedthis 的事件上sap.ui.core.routing.Router。此事件类似于路由匹配。但它只会对具有匹配模式的路由触发,而不会针对其父模式触发Routes。
例如可以使用
sap.ui.define([
"sap/ui/core/mvc/Controller"
], function (Controller) {
"use strict";
return Controller.extend("sap.ui.demo.wt.controller.Detail", {
onInit: function () {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.getRoute("detail").attachMatched(this._onObjectMatched, this);
// oRouter.attachRouteMatched(this._onObjectMatched, this);
},
_onObjectMatched: function (oEvent) {
this.getView().bindElement({
path: "/" + oEvent.getParameter("arguments").invoicePath,
model: "invoice"
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
要么 …
sapui5 ×10
hana ×3
javascript ×2
sap ×2
controller ×1
fragment ×1
hana-xs ×1
routing ×1
validation ×1
webstorm ×1