我有一个使用CFlayout生成动态标签的应用程序。每个选项卡都由变量组合组成,但就本文而言,没有必要进入该选项。
这是有趣的。在过去,如果CFlayout找不到选项卡,我总是会收到错误。如果我更改选项卡名称(知道它不正确),Coldfusion会抛出错误,所以我知道选项卡存在通常,但无论出于何种原因,它都不会切换。
以下是我的代码:
的JavaScript
var uniqueTopTabID = someVar,
uniqueLowerTabID = uniqueTopTabID + someVar,
$topLayoutID = $('#cf_layoutarea' + uniqueTopTabID), //jquery objects to find if the tabs exist
$lowerTabID = $('#cf_layoutarea' + uniqueLowerTabID); //same as above
以下是创建新标签或选择以前创建的标签的逻辑:
if ( $topLayoutID.length < 1 ) {
ColdFusion.Layout.createTab('innerTabLayout', uniqueTopTabID, 'tabName' , cfLayoutLocation, {inithide: false, selected: true, closable: true});
}
//if the subsystem and WBS have already been selected, focus on that tab
else if ( $lowerTabID.length !== 0 ) {
ColdFusion.Layout.selectTab( uniqueTopTabID, uniqueLowerTabID );
//i have also tried to select the top tab, and then select the bottom tab but that doesn't work either
}
就像我说的那样,没有抛出任何错误 - 我可以看到焦点来自当前的父选项卡,但无论出于何种原因,它都没有选择其他顶级选项卡。但是,如果尝试创建的选项卡位于当前父选项卡下,则会选择较低级别选项卡。
以下是我在 ColdFusion 方面生成标签的方法:
<cfif structKeyExists(URL,"bp")> <!--- make sure some var is available --->
<cfset actualsScenarioView = "actualsScenarioView"&URL.ss>
<cflayout name="#actualsScenarioView#" type="tab">
<cfset scenarioName = URL.tabId>
<cfset tabTitle = URL.subSystemName & ': ' & URL.wbsName>
<cfset sourceFile = 'the URL passed in' >
<cflayoutarea name="#scenarioName#" title="#tabTitle#" source="#sourceFile#" refreshOnActivate="false" closable="true">
</cflayoutarea>
</cflayout>
<cfelse>
<!--- if vars not avail, the page was request prior to submission, and will show noting--->
</cfif>
标签创建得很好,除了选择不同的父标签外,一切正常。
非常感谢任何帮助。
答案 0 :(得分:1)
几乎所有ColdFusion的显示方面都很糟糕。 ColdFusion是一个很好的中间件,但它不擅长编写JavaScript,无论是表单验证还是div。
你应该认真考虑重写而不用cflayout来看看http://static.raymondcamden.com/cfuitherightway/cflayout-tabs/index.html这是Raymond Camden&amp; Adam Cameron概述了如何更好地处理ColdFusion ISN擅长的事情。这是一个很好的资源。