首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改div - google地图api - SAPUI5地图

更改div - google地图api - SAPUI5地图
EN

Stack Overflow用户
提问于 2017-06-23 15:22:27
回答 1查看 299关注 0票数 0

我正在用sapui5开发一个map应用程序,它需要使用地图。这是我的场景:

我有一个名叫view1的视图,这是我的主要作品。在该视图中,我有一个输入字段(Input1)和一个图标选项卡,有4个不同的选项卡。

默认选项卡是第一个选项卡,我需要它作为一个要求。现在,incontabbar的第二个选项卡对应于映射。Input1字段,是对应于映射的自动完成字段的字段。

在这里,有趣的是,在指向制表符的选项卡中,我有子视图,它有自己的控制器和视图文件(xml视图)。

View1代码:(用完整的view1更新)

代码语言:javascript
运行
复制
<mvc:View controllerName="WDC.controller.View1" 
xmlns:html="http://www.w3.org/1999/xhtml" 
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc" 
xmlns:f="sap.ui.layout.form"
displayBlock="true" 
xmlns="sap.m">
<App>
    <pages>
        <Page title="{i18n>title}">
            <f:SimpleForm id="SimpleFormToolbar">
                <f:content >

                    <Label class="labels" width="50%" id="label" text="Address" labelFor="input1"/>
                    <Input class="myInput" id="input1" width="50%" fieldWidth="100%" showSuggestion="true"/>
                </f:content>

            </f:SimpleForm>
            <IconTabBar>
                <items>
                    <IconTabFilter icon="sap-icon://employee" text="Data" id="iconTabBarData">
                        <mvc:XMLView viewName="WDC.view.view3"/>
                    </IconTabFilter>
                    <IconTabFilter icon="sap-icon://map" text="Map" id="mapTab" visible="true">             
                            <mvc:XMLView viewName="WDC.view.View2"/> // THIS VIEW IS NOT CREATED UNTIL I CLICK ON ITS TABICON
                    </IconTabFilter>

                </items>
            </IconTabBar>
        </Page>
    </pages>
</App>
</mvc:View>

我需要做的是,当用户从input1字段从view1搜索某些内容时,自动调用带有地图的第二个选项卡,并在子视图中显示用户搜索的地址(让我们称之为view2)。问题是,我不能将input1指定为tab2中映射的自动完成,因为该视图是在我按下表过滤器图标后才创建的。

我认为我唯一的机会是在view1中创建一个带有映射的隐藏div,将input1分配给它,当用户搜索某个东西时,将地图从view1“移动”到view2上的div。但我不知道如何做到这一点。

我尝试在view1中为div创建一个带有htmlcode的隐藏组件,但是如果我将visible=设置为“false”,则html代码不会显示,所以我无法创建映射。如果我让组件可见,映射就会出现在view1上并运行良好,但我不知道如何将它“移动”到另一个尚未创建的视图。

如果需要,我可以使用来自view1控制器的getter函数从onInit FUnction on view2中的view1获取映射,但我仍然需要知道如何做这三件事:

  1. 在view1中有一个"temp“div,这是不可见的,但是我可以使用它创建一个input1自动完成的映射。
  2. 当在“自动完成输入”框中搜索某些内容时,启用图标选项卡的第二个选项卡并使其可见。
  3. 将地图从view1移动到view2上的div,并从view1保持与input1的连接。

希望我说得够清楚,这让我快疯了!

EN

回答 1

Stack Overflow用户

发布于 2017-06-23 20:17:10

如果我正确地理解了你,你的问题是:“如何在不同的孤立观点之间建立联系?”

由于您在XML中以声明方式将view2包含到view1中,这意味着将在同一个组件的作用域中创建内部视图(和相应的控制器),这意味着将在它们之间共享所有者组件。这一声明为我们提供了以下机会:

由于view1view2的控制器共享相同的组件:"this.getOwnerComponent()",您可以通过事件在两个视图(对应的控制器)之间建立连接,这些事件将在共享组件对象上触发:

View1.控制器(JS):

代码语言:javascript
运行
复制
onSuggestSelected: function () {
    ---------
    var oComponent = this.getOwnerComponent();
    oComponent.fireEvent("view1:suggestValue", {foo: "bar"});
}

View2.控制器(JS):

代码语言:javascript
运行
复制
onInit: function () {
    var oComponent = this.getOwnerComponent();
    oComponent.attachEvent("view1:suggestValue", function (oParams) {
        var sSuggestValueFromView1 = oParams.foo;
        // do some logic here
    });
}

通过这种方式,您可以在激活/呈现/任何情况下从view2view1发送消息,而view1可以告诉view2E 223使用某个参数进行搜索。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44724958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档