[已更新 - 已解決]使Bootstrap開關自定義控制工作
事實證明,這不是AMD問題。問題是我使用的Bootstrap-Switch代碼的版本不正確。我切換到3.3.4,一切正常。謝謝你,霍華德。
[更新 - 我添加的代碼我使用克服了AMD問題]
看到這篇文章的結尾。
我想讓Howard Greenberg's Bootstrap Switch Custom Control工作。
我相信我完全按照說明操作。我碰到的唯一問題是在他的自定義控制屬性中沒有switchBinding,我認爲這是必要的,所以我添加了一個。
我沒有收到任何錯誤,但是我看到的只是一個帶有計算字段的空白頁面[「Bryan」]。
我在做什麼錯?
XPAGE
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.beforePageLoad><![CDATA[#{javascript:viewScope.sampleValue = "Bryan"}]]></xp:this.beforePageLoad>
<xc:cc_CommonFieldCheckBox3
refreshId="computedField1"
checkedValue="checked"
uncheckedValue="not checked"
offLabel="OFF"
onLabel="ON"
labelText="Label"
dataSize="normal"
offColor="success"
onColor="warning"
handleWidth="auto"
labelWidth="auto"
inverse="false"
switchBinding="viewScope.sampleValue">
</xc:cc_CommonFieldCheckBox3>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:text
escape="true"
id="computedField1" value="#{viewScope.sampleValue}">
</xp:text>
</xp:view>
自定義控件
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:styleSheet
href="/bootstrap-switch/css/bootstrap-switch.min.css"></xp:styleSheet>
<xp:script
src="/bootstrap-switch/js/bootstrap-switch.min.js"
clientSide="true">
</xp:script>
</xp:this.resources>
<xp:panel
id="checkBoxPanel">
<xp:eventHandler
event="onClientLoad"
submit="false">
<xp:this.script><![CDATA[x$("#{id:checkBox1}").bootstrapSwitch();
var refreshId = "#{javascript: (compositeData.refreshId!=null) ? getClientId(compositeData.refreshId):''}";
if (refreshId != null || refreshId != "") {
// set the partial refresh if the user put an id in the cc property
x$("#{id:checkBox1}")
.on(
'switchChange.bootstrapSwitch',
function(event, state) {
XSP
.partialRefreshPost("#{javascript: (compositeData.refreshId!=null) ? getClientId(compositeData.refreshId):''}");
});
}
function x$(idTag, param) { // Updated 18 Feb 2012
idTag = idTag.replace(/:/gi, "\\:") + (param ? param : "");
return ($("#" + idTag));
}]]></xp:this.script>
</xp:eventHandler>
<xp:checkBox
id="checkBox1"
checkedValue="${javascript:return compositeData.checkedValue;}"
uncheckedValue="${javascript:return compositeData.uncheckedValue;}"
defaultChecked="false">
<xp:this.value><![CDATA[${javascript:"#{"+compositeData.switchBinding+"}"}]]></xp:this.value>
<xp:this.attrs>
<xp:attr
name="data-on-text"
value="${javascript:return compositeData.onLabel;}">
</xp:attr>
<xp:attr
name="data-off-text"
value="${javascript:return compositeData.offLabel;}">
</xp:attr>
<xp:attr
name="data-label-text"
value="${javascript:return compositeData.labelText;}">
</xp:attr>
<xp:attr
name="data-size"
value="${javascript:return compositeData.dataSize;}">
</xp:attr>
<xp:attr
name="data-on-Color"
value="${javascript:return compositeData.onColor;}">
</xp:attr>
<xp:attr
name="data-off-Color"
value="${javascript:return compositeData.offColor;}">
</xp:attr>
<xp:attr
name="data-handle-width"
value="${javascript:return compositeData.handleWidth;}">
</xp:attr>
<xp:attr
name="data-label-width"
value="${javascript:return compositeData.labelWidth;}">
</xp:attr>
<xp:attr
name="data-inverse"
value="${javascript:return compositeData.inverse;}">
</xp:attr>
</xp:this.attrs>
</xp:checkBox>
</xp:panel>
</xp:view>
定製控件屬性
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<faces-config-extension>
<namespace-uri>http://www.ibm.com/xsp/custom</namespace-uri>
<default-prefix>xc</default-prefix>
</faces-config-extension>
<composite-component>
<component-type>cc_CommonFieldCheckBox3</component-type>
<composite-name>cc_CommonFieldCheckBox3</composite-name>
<composite-file>/cc_CommonFieldCheckBox3.xsp</composite-file>
<composite-extension>
<designer-extension>
<in-palette>true</in-palette>
<render-markup><?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core">
<B>Bootstrap Switch Custom Control</B></xp:view></render-markup>
<category>Custom Controls - Fields</category>
</designer-extension>
</composite-extension>
<property>
<property-name>refreshId</property-name>
<property-class>string</property-class>
<display-name>refreshId</display-name>
<description>If you supply a control Id than that control will be partially refreshed upon change. If this is empty than no refresh happens.</description>
<property-extension>
<required>false</required>
</property-extension>
</property>
<property>
<property-name>checkedValue</property-name>
<property-class>string</property-class>
<display-name>checkedValue</display-name>
<property-extension>
<required>true</required>
</property-extension>
</property>
<property>
<property-name>uncheckedValue</property-name>
<property-class>string</property-class>
<display-name>uncheckedValue</display-name>
<property-extension>
<required>true</required>
</property-extension>
</property>
<property>
<property-name>onLabel</property-name>
<property-class>string</property-class>
<display-name>onLabel</display-name>
<property-extension>
<required>true</required>
<designer-extension>
<default-value>ON</default-value>
</designer-extension>
</property-extension>
</property>
<property>
<property-name>offLabel</property-name>
<property-class>string</property-class>
<display-name>offLabel</display-name>
<property-extension>
<required>true</required>
<designer-extension>
<default-value>OFF</default-value>
</designer-extension>
</property-extension>
</property>
<property>
<property-name>labelText</property-name>
<property-class>string</property-class>
<display-name>labelText</display-name>
<property-extension>
<required>true</required>
<designer-extension>
<default-value>Label</default-value>
</designer-extension>
</property-extension>
</property>
<property>
<property-name>dataSize</property-name>
<property-class>string</property-class>
<display-name>dataSize</display-name>
<property-extension>
<designer-extension>
<editor>com.ibm.workplace.designer.property.editors.comboParameterEditor</editor>
<editor-parameter>mini
small
normal
large</editor-parameter>
<default-value>normal</default-value>
</designer-extension>
</property-extension>
<description>Size of the switch</description>
</property>
<property>
<property-name>onColor</property-name>
<property-class>string</property-class>
<display-name>onColor</display-name>
<property-extension>
<designer-extension>
<editor>com.ibm.workplace.designer.property.editors.comboParameterEditor</editor>
<editor-parameter>primary
info
success
warning
danger
default</editor-parameter>
<default-value>primary</default-value>
</designer-extension>
</property-extension>
<description>Color of left side of switch</description>
</property>
<property>
<property-name>offColor</property-name>
<property-class>string</property-class>
<display-name>offColor</display-name>
<property-extension>
<designer-extension>
<editor>com.ibm.workplace.designer.property.editors.comboParameterEditor</editor>
<editor-parameter>primary
info
success
warning
danger
default</editor-parameter>
<default-value>default</default-value>
</designer-extension>
</property-extension>
<description>Color of right side of switch</description>
</property>
<property>
<property-name>labelWidth</property-name>
<property-class>string</property-class>
<display-name>labelWidth</display-name>
<property-extension>
<designer-extension>
<default-value>auto</default-value>
</designer-extension>
</property-extension>
<description>Width of the center handle in pixels, default is auto</description>
</property>
<property>
<property-name>handleWidth</property-name>
<property-class>string</property-class>
<display-name>handleWidth</display-name>
<property-extension>
<designer-extension>
<default-value>auto</default-value>
</designer-extension>
</property-extension>
<description>Width of the left and right sides in pixels, default is auto</description>
</property>
<property>
<property-name>inverse</property-name>
<property-class>string</property-class>
<display-name>inverse</display-name>
<description>Inverse switch direction</description>
<property-extension>
<designer-extension>
<default-value>false</default-value>
<editor>com.ibm.workplace.designer.property.editors.comboParameterEditor</editor>
<editor-parameter>true
false</editor-parameter>
</designer-extension>
</property-extension>
</property>
<description/>
<property>
<property-name>switchBinding</property-name>
<property-class>string</property-class>
</property>
</composite-component>
</faces-config>
<xp:this.resources>
<xp:styleSheet
href="/bootstrap-switch/css/bootstrap-switch.min.css"></xp:styleSheet>
</xp:this.resources>
我認爲這是一個AMD裝載機問題,因爲引導交換機使用AMD –
每,我添加的代碼從此片段(https://openntf.org/XSnippets.nsf/snippet.xsp?id=hack- to-use-jquery-amd-widgets-and-dojo-together)並添加到正在使用的js庫中,沒有任何改變。我會將代碼發佈到我原來的問題。 –
嘗試使用簡單的方法編輯bootstrap-switch lib,並用false替換AMD部分。 –