将inputText值绑定到具有计算名称的viewScope

时间:2013-07-25 13:51:13

标签: data-binding xpages

我在自定义控件上有一个inputText组件,我试图将值绑定到viewScope,但是viewScope名称是使用compositeData值和字符串计算的。

如果我对值绑定进行硬编码,则可以使用,例如:     值= “$ {viewScope [ 'BillingDate_From']}”

使用以下javascript代码计算viewScope名称:     compositeData.dateRangeFilter [0] .from_fieldname +'_From'

我尝试了很多方法来实现这一目标,但没有成功,有时会出现错误,通常是意外的字符错误,但大多数情况下inputText框都是空的。

我最近尝试过的代码:     value =“$ {viewScope [#{javascript:compositeData.dateRangeFilter [0] .from_fieldname +'_From'}]}”

2 个答案:

答案 0 :(得分:1)

我发现,我不知道这个的原因,如果评估中有任何字符串连接,尝试动态绑定不起作用。我解决这个问题的方法是创建一个自定义控件,接受bindingValue和dataSource作为参数,然后传入我想要使用的文档和字段名称。无论出于何种原因,如果代码使用复合数据,它仍然允许在页面加载时进行编辑。

答案 1 :(得分:1)

嗨试试这个来构建你需要的东西:

控制:

           <xp:inputText id="inputText1">
                <xp:this.value><![CDATA[${javascript:"#{"+compositeData.scopeName+"}";}]]></xp:this.value>
            </xp:inputText>
            <xp:text escape="true" id="computedField1">
    <xp:this.value><![CDATA[${javascript:"#{"+compositeData.scopeName+"}";}]]></xp:this.value>
</xp:text>

使用Control的XPage:

<xc:cc id="xx">
    <xc:this.scopeName><![CDATA[#{javascript:return "viewScope." + " calculatedScopeVarName";}]]></xc:this.scopeName>
    </xc:cc>
    <xp:button value="Beschriftung" id="button1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="partial" refreshId="xx">
            <xp:this.action><![CDATA[#{javascript://}]]></xp:this.action>
        </xp:eventHandler>
</xp:button>

您无法添加会话或其他范围而不是computeScopeVar,而不是“viewScope”,您可以输入var的名称。但这有一个限制,只有在通过组件onLoad可以访问calculatedScopeVar时它才有效。例如,如果在Repeat控件中使用此控件并尝试将重复的数组用作calculatedScopeVar,则它将无法工作。