내 CSS에서 '@ 미디어 전용 화면'을 사용하여 사용자 화면 크기에 따라 표시 할 정보와 정보를 결정했습니다. 769px보다 큰 화면을 표시하도록 설정된 panelContainer 클래스와 화면이 작을 때 표시되는 mobileContainer라는 클래스가 있습니다.viewScope onLoad 및 onResize 설정
표준 양식 레이아웃을 포함하는 두 개의 사용자 지정 컨트롤과 모바일 장치 양식 레이아웃이 포함 된 컨트롤이 있습니다. 원래 각 div 주위에 적절한 스타일 클래스로 div를 두었습니다. 이 방법의 문제점은 오직 하나의 양식 만 표시 되더라도 두 가지 모두로드되어 저장 문제가 발생했기 때문입니다. 에는 panelcontainer의 styleClass 내 Xpage에 사업부를 추가하기 때문에
<xp:div id="panelContainer" styleClass="panelContainer">
<xc:content_sCompany></xc:content_sCompany>
</xp:div>
<xp:div id="mobileContainer" styleClass="mobileContainer">
<xc:content_iCompany></xc:content_iCompany>
</xp:div>
, 나는 다음 사업부의 style.display를을 반환에 onLoad 및하여 onResize 이벤트를 추가 내가 한 이들은 다음 viewScope 그 결과를 작성해야합니다. 하지만 그것은 onLoad 만 작성하고 함수는 onResize라고 불리워졌지만 viewScope 변수를 변경하지는 않는다는 것을 알았습니다.
<xp:scriptBlock id="scriptBlock1" type="text/javascript">
<xp:this.value>
<![CDATA[var init = function() {
obj=document.getElementById('formType');
if(getStyleDisplay(obj)=="none"){
formType='#{javascript:viewScope.put("formFormat","mobile");}';
}else{
formType='#{javascript:viewScope.put("formFormat","standard")}';
}
}
dojo.addOnLoad(init);
dojo.connect(window,"onresize",init);
function getStyleDisplay(obj) {
if(obj.currentStyle) { // IE – Opera
return obj.currentStyle.display;
} else { // firefox
return getComputedStyle(obj,'').getPropertyValue('display');
}
}]]>
</xp:this.value>
</xp:scriptBlock>
<div id="formType" class="panelContainer"></div>
은 .....이 viewScope 변수는 다음과 같은 방법으로 사용됩니다
<xc:content_Company xp:key="ContentControl">
<xp:this.facets>
<xc:content_sCompany id="content_sCompany"
xp:key="standard">
</xc:content_sCompany>
<xc:content_iCompany id="content_iCompany"
xp:key="mobile">
</xc:content_iCompany>
</xp:this.facets>
</xc:content_Company>
..... content_Company에서 추출 ......
<xp:callback facetName="#{viewScope.formFormat}" id="cbkCompanyFormContent">
</xp:callback>
필자는 필자가 필요로하는 결과를 얻는 더 좋은 방법이라고 생각합니다. 수동으로 시도했을 때 폼 중 하나만로드하고 예상대로 작동하기 때문입니다.
viewScope가 제대로 설정되지 않은 이유를 알 수 없으며, 페이지를로드하기 전에 내 페이지를 축소하더라도 항상 '표준'으로 설정됩니다. 숨겨진 입력에 값을 쓰려고 시도했으나, getComponent ("hiddenInput1"). getValue()를 사용하여 값에 액세스하려고 할 때마다 값을 볼 수는 있어도 null을 반환합니다. 방화범.
안녕 사이먼, 내가 전반에 걸쳐 경고를 추가 않은 :이 예제를 체크 아웃 (안 문제의 코드는 나도 당신을 가리키는하고있어, 그는 문제 웹뷰에서 작업 할 것을 받고있다) 과정을 거치고 적절한 시점에 방아쇠를 당겼습니다. 나는 onResize를 사용하여 전체적인 문제를 복잡하게 만들었다 고 생각합니다. 당시로서는 좋은 생각이었습니다! 당신이 제안하는대로 더미 기본로드 페이지를 살펴볼 것입니다. 많은 분들께 –
에게 감사 드리며 뷰 스코프를 기반으로 패싯을 결정하는 부분을 새로 고침을하셨습니까? 그것없이 디스플레이를 변경하지 않기 때문에 –
아니요, 그러나 viewScope 자체는 절대로 바뀌지 않았으므로 그다지 멀지 않았습니다. 다시 한 번 감사드립니다. –