我无法将数据从XML视图发送到控制器.在JS视图中很容易实现.
例如:-
在JS视图中: -
var btn = new sap.m.Button({
    text:"click",
    tap:function(){
          callFunction(oEvent, "mycustomString");
    }
});
如何使用XML视图实现相同的功能.
<Button text="click" tap="callFunction"/>
以上只会传递事件而不是"mycustomString".我该怎么做?
在sapUI5/openUI5中,我有一个JSONModel,我填充来自服务器的文件:
var oModel = new JSONModel();
oModel.loadData("http://127.0.0.1/data/config.json");
console.log(JSON.stringify(oModel.getData()));
由于请求是异步的,控制台会记录一个空的oModel.
console.log()在加载数据后调用如何使它同步?
使用sap.m.Select,我有类似的代码如下:
<m:Select
    selectedKey='{state}'
    items="{
        path: 'states>/content',
        sorter: {
            path: 'name'
        }
    }">
    <core:Item key="{states>id}" text="{states>name}" />
</m:Select>
由于希望能够在另一个输入中选择时按国家/地区过滤状态,因此,我正在尝试使用filters,这在文档中定义:
问题是我找不到任何地方(文档,谷歌,SO,源代码,示例,测试),显示如何正确使用它.我试过这两种方法没有成功:
<m:Select
    selectedKey='{state}'
    items="{
        path: 'states>/content',
        sorter: {
            path: 'name'
        },
        filters: [{
            path: 'countryId',
            operator: 'EQ',
            value1: '10' // just example
        ]}
    }">
    <core:Item key="{states>id}" text="{states>name}" />
</m:Select>
和
# View
<m:Select
    selectedKey='{state}'
    items="{
        path: 'states>/content',
        sorter: {
            path: 'name'
        },
        filters: ['.filterByCountry'}
    }">
    <core:Item key="{states>id}" text="{states>name}" />
</m:Select>
# Controller
...
filterByCountry: new sap.ui.model.Filter({ …我必须重构一个OPA5测试模块,因为目前大多数测试用例都失败了.在试图找到失败的原因时,我发现大多数测试都没有错误.
当你单独运行它们时,它们只能找到它.当您将它们作为模块运行时,会出现问题.表示您将它们作为一个组运行.一个接一个的测试.
当一个测试失败时,会出现问题.通常你执行iTeardownMyAppFrame()作为 
 了最后的测试方法.用于删除使用过的iFrame.以便以下测试找到可以运行的未受影响的环境.
现在,当测试在某一行失败时,测试将停止,并且不会执行以下调用.
iTeardownMyAppFrame永远不会执行,并且在先前(失败的)测试的环境中开始以下测试.所以它也可能失败,因为环境不如预期.
有没有办法确保每个测试都在新的iFrame中开始?
iTeardownMyAppFrame在finally块中使用"try-finally"之类的东西.所以它在任何情况下都会被执行.无论测试是否有效或失败.
框架:SAPUI5 V1.38.39 
IDE:SAP WEB IDE
我想在另一个应用程序中使用 SAPUI5 应用程序,为此我找到了以下资源:https ://blogs.sap.com/2017/04/05/sapui5-how-to-reuse-parts-of- a-sapui5-application-in-othermultiple-sapui5-applications/
在 init 中的 component.js 中我使用了:
var sPath = sHostUrl.includes("webidetesting") ? "https://gtyext.net" : sHostUrl;
jQuery.sap.registerModulePath("ztntapp", `${sPath}/sap/bc/ui5_ui5/sap/ztntapp/`);
在我看来:
<core:ComponentContainer 
    name="ztntapp" 
    manifestFirst="true" 
    component="ztntapp">
</core:ComponentContainer>
并在 neo-app.json 中
{
    "path": "/sap/bc/ui5_ui5/sap/ztntapp/",
    "target": {
        "type": "destination",
        "name": "gtyext_net",
        "entryPath": "/sap/bc/ui5_ui5/sap/ztntapp/"
    },
    "description": "namespace.tntapp Resources"
}
在 component.js 中
sap.ui.define([
    "sap/ui/core/UIComponent",
    "sap/ui/Device",
    "./model/models"
], function (UIComponent, Device, models) {
    "use strict";
    return UIComponent.extend("TrackAndTrace.ztntapp.Component", {
        metadata: {
            manifest: "json"
        },
        init: function …所以基本上我的问题是我有一个页面:
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);
});
在这里,我想获得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({ …我有一个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
        })
    }
}) 
如上例所示,我在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);
    });
},
我们假设绑定的模型变量是初始的.我正在加载视图,属性值被解析并显示为空.尽管未满足约束,但未调用Validationerror/Parseerror方法.这似乎是OpenUI5的标准行为.只有控件中的更改才会被验证.
现在让我们假设我有一个提交按钮,并且Inputcontrol的值仍为空.当用户点击提交按钮时,我想为我的视图的所有子控件触发DataBinding Validation.这将验证上述输入并导致错误.
我的问题是:如何触发视图中所有子控件的数据绑定验证?
关于SO的另一个问题是海报要求定义必要字段的方法.建议的解决方案是在控件上调用getValue()并手动验证值.我认为这有点麻烦,因为形成和约束信息和逻辑已经存在.
我真的不知道下面的属性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"
            }
观点定义如下 - 没有提到'页面'
<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>
和
<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>
对于以下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"
            });
        }
    });
});
要么 …
sapui5 ×10
javascript ×2
asynchronous ×1
hana ×1
sap ×1
sap-fiori ×1
sap-web-ide ×1
validation ×1