如何关闭视图并在famo.us中显示另一个视图

时间:2014-07-29 08:28:10

标签: javascript hybrid-mobile-app famo.us

我有一个包含不同表面的视图,我希望我的应用程序关闭此视图并通过单击第一个视图上的按钮显示另一个视图,但我不知道如何关闭第一个视图

这是我的代码:

   var Engine = require('famous/core/Engine');
var Surface = require('famous/core/Surface');
var View = require('famous/core/View');

var mainContext = Engine.createContext();

var myView = new View();
var SecondView=new View();
mainContext.add(myView);


var surface = new Surface({
  size: [100, 100],
  content: 'click me',
  properties: {
    color: 'white',
    textAlign: 'center',
    backgroundColor: '#FA5C4F'
  }
});
var surface2= new Surface({
  content:'hi',
  size:[100,100],
  properties:{
    backgroundColor:'pink'
  }
});

myView.add(surface);
SecondView.add(surface2);

surface.pipe(myView);



surface.on('click',function(){
 mainContext.add(SecondView)

});

surface2.on('click',function(){
 mainContext.add(myView)

});

现在,它第一次有效!它从myView转到第二个视图,然后它会回来,但如果你第二次点击表面它就不会工作!我觉得我应该删除myView然后显示SecondView才能工作,但我不知道如何!

1 个答案:

答案 0 :(得分:1)

我希望你使用一个独立的表面作为一个例子而你实际上并没有实际观察它。使用渲染控制器显示和隐藏您的视图。

        var renderer = new RenderContoller;
        var currentPage;

        var showPage1 = function() {
            var Page1View = require('Views/Page1View');
            currentPage = new Page1View();
            renderer.show(currentPage);

            currentPage.on('linkClick', function(){
                console.log('link was clicked');
                renderer.hide();
                currentPage = null;
                showPage2();
            });

        };

showPage1内的表面具有以下内容:

            page = this;
            component.on('click', function(){
                page._eventOutput.emit('linkClick');
            });

希望如果您不理解上述任何内容,请帮助我,我会尝试进一步解释。