iPad> Appcelerator>合金>如何为特定控制器加载不同的视图?

时间:2012-11-01 08:48:30

标签: ipad titanium appcelerator

希望快速提问......我在文档中找不到这个可能意味着我不应该这样做。

假设我有一个“源”控制器和一个“源”视图。

通常我会做这样的事情:

var sources = Alloy.createController('source');
$.index.add(sources.getView());

现在,我希望源根据ipad的方向有不同的视图。但它仍然是相同的信息,只是略有不同。

我以为我可能会做这样的事情:

var sources = Alloy.createController('source');
Ti.Gestures.addEventListener( "orientationchange", function(){
    if(Ti.Gestures.isPortrait()){
       $.index.add( sources.getView('sources/portrait') );
    }else{
       $.index.add( sources.getView('sources/landscape') );
    }
});

显然我必须删除我没有使用的视图,但这是一般的想法。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我建议使用后一种方法(隐藏/显示),而不是向堆栈添加更多视图。考虑一下使用AJAX和响应式设计的传统HTML网页 - 您可以使用JS / CSS执行此操作,而不是重新加载页面。

假设您只想要一个额外的景观视图

XML: <View id="ExtraLandscapeView">...<View>

TSS:     "#ExtraLandscapeView" : { /* Styles here */ }

JS:

if(Ti.Gestures.isPortrait()){
    $.ExtraLandscapeView.visible = false;
} else{
   $.ExtraLandscapeView.visible = true;
}