标签: sapui5

使用UI5上传SAP HANA XS文件

我正在尝试在HANA XS服务器上的UI5应用程序中实现文件上载.我找不到很多信息怎么做 - 有人有个主意吗?

sap hana hana-xs sapui5

6
推荐指数
1
解决办法
7620
查看次数

如何在sap.m.table中获取行的内容

所以基本上我的问题是我有一个页面:

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,我不知道如何?

谢谢

sapui5

6
推荐指数
1
解决办法
2万
查看次数

如何在XML视图中使用layout.Grid SAPUI5?

我有那个代码.(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)

sapui5

6
推荐指数
1
解决办法
1万
查看次数

使用WebStorm开发SAPUI5应用程序

看一下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存储库同步?

webstorm hana sapui5

6
推荐指数
1
解决办法
2277
查看次数

在SAPUI5中实例化片段时传递另一个控制器

在SAPUI5/OpenUI5 xmlfragment文档中,第三个参数是用于处理片段中的操作的控制器.

这对于按下按钮等的对话框片段至关重要.

大部分时间我都看到过这个实例化为thissap.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)

javascript controller fragment sapui5

6
推荐指数
1
解决办法
1万
查看次数

如何触发所有控件的DataBinding验证?

我有一个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()并手动验证值.我认为这有点麻烦,因为形成和约束信息和逻辑已经存在.

validation sapui5

6
推荐指数
2
解决办法
7729
查看次数

将数据从主页传递到详细页面

我观看了一些关于导航+在视图之间传递数据的教程,但它在我的情况下不起作用.我的目标是实现以下目标:

  1. 在MainPage上,用户可以看到包含产品的表(JSON文件).(工作良好!)
  2. 按"详细信息"按钮后,将显示详细信息页面("表单")以及有关选择的所有信息.

导航工作完美,详细信息页面显示,但数据绑定似乎不起作用(没有数据显示)我的想法是将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

6
推荐指数
2
解决办法
9068
查看次数

SAPUI5限制页面可见性

有什么方法/最佳实践来隐藏SAPUI5中用户的不可用页面?

让我们来看一个例子。我有一个带有用户登录页面的复杂应用程序。客户可以在此处登录该应用程序,并从后端系统检索其角色数据。基于这些角色,不允许某些用户创建新对象。只有登录的用户才能看到应用程序页面。我正在使用路由,因此编辑等功能也可以通过直接链接访问。

当前,我正在Component.js中使用onRouteMatched事件处理程序,该事件处理程序将检查当前的用户会话存储。如果未找到用户会话,它将请求重定向到登录页面。

问题在于,在导航到登录页面之前,它会显示请求的页面一到两秒钟。真的很丑。

我应该在哪里实现这种功能?此用例是否有任何钩子方法?

我认为我需要在显示与给定路由匹配的视图并将调用重定向到登录页面之前调用的hook方法。不幸的是,我在本主题中找不到任何有用的文档。

谢谢!

routing authorization sapui5

6
推荐指数
1
解决办法
1501
查看次数

SAPUI5路由配置中'controlAggregation'的含义是什么?

我真的不知道下面的属性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)

javascript sap hana sapui5

6
推荐指数
1
解决办法
3987
查看次数

SAPUI5中的attachMatched()和attachPatternMatched()和/或attachRouteMatched()和attachRoutePatternMatched()有什么区别?

对于以下SAPUI5路由方法之间的区别有一个示例感到高兴:

sap.ui.core.routing.Route

  • attachMatched()
  • attachPatternMatched()

sap.ui.core.routing.Router

  • attachRouteMatched()
  • attachRoutePatternMatched()

API说明了什么attachMatched()attachPatternMatched()没有任何区别。

API表示attachRouteMatched()

将event-handler附加fnFunctionrouteMatchedthis 的事件上 sap.ui.core.routing.Router

API表示attachRoutePatternMatched()

将event-handler附加fnFunctionroutePatternMatchedthis 的事件上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

6
推荐指数
1
解决办法
4840
查看次数