【问题标题】:Deleting a view and onclick opening it again, as if it is new - SAPUI5删除视图并再次单击打开它,就好像它是新的一样 - SAPUI5
【发布时间】:2015-06-11 07:19:05
【问题描述】:

我有一个多视图设置,一个主视图,然后是在某些操作后单击按钮打开的模块。

现在,每当视图打开时,我都会重置视图,但我想要完成的是,当视图离开时,它会从核心中消失并再次启动,就好像它是第一次打开一样。

我不确定如何,我尝试了多种方法,但都没有达到我的预期(.destroy().removeAllContent(),...)。

我错过了一个功能还是有办法实现它?

一些代码:

index.js(第一次如何实例化视图,第二次不调用)

module.exports.Partner = function(place) {
    View = require('./app/js/suche.view');
    Bearbeiten = require('./app/js/bearbeiten.view');
    var ctrl = View.getController();
    ctrl.setPlace(ctrl, place);
    ctrl.setEditPlace(ctrl, place);
    ctrl.setCreatePlace(ctrl, place);
    sap.ui.getCore().byId('suche').placeAt(place);
    sap.ui.getCore().byId('suche').byId('searchBtn').attachPress(ctrl.nummerSearch, ctrl);
};

控制器(如何调用 View 和 index.js)

handlePartnerSuche : function(){
        this.hideView(); //this is the main view
        var p = require('bit-js-business-partner');
        var partner_view = p.Partner('content');
        p.setCallbackForSchliessen(this, this.callbackForSchliessen);
  },

控制器(回调函数)

callbackForSchliessen: function(){
        this.showView();
    },

第二个视图(如何关闭)

handleSchliessen : function () {
        var p = this.getView('suche');
        p.setVisible(false);

        this.callbackMethodSchliessen.call(this.callbackCtrlSchliessen);
    },

【问题讨论】:

  • 能否请您添加代码,以便我可以有效地帮助您。我很好奇,因为.destroy() 肯定会破坏并删除核心视图。
  • 没错,它会删除它,但是当我再次单击该按钮以打开视图时。什么都没有发生,视图也没有出现。
  • ye...你如何再次实例化视图...就像我说的一些代码会让我的生活更轻松
  • 您是否在进行 ajax 调用以在视图被销毁后的下一次呈现?这可能是一个解决方案..
  • 不,但您永远不应该通过切换可见性来显示视图。为此使用路由器

标签: javascript jquery node.js model-view-controller sapui5


【解决方案1】:

您提到由于公司限制,您不能使用路由器机制 -- 我真的很想知道这些限制是什么 ;-) -- 并切换各个视图的 visibility 属性而是。

在这种情况下,我会在您将视图的可见性设置为可见的方法中触发 OData 服务,然后(重新)将 ODataModel 绑定到该视图。

从性能的角度来看,我不建议从核心破坏视图

【讨论】:

  • 限制来自于框架的奇怪设置。他们想使用事件总线而不是路由。复杂而诡异。它是一家老公司,相当进步,但很好^^
猜你喜欢
  • 2016-03-16
  • 2015-05-24
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
相关资源
最近更新 更多