首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向此XBL控件添加设计时属性?

如何向此XBL控件添加设计时属性?
EN

Stack Overflow用户
提问于 2015-11-19 02:24:23
回答 1查看 59关注 0票数 0

使用Orbeon,我使用以下XBL实现了一个简单的控件:

代码语言:javascript
复制
<xbl:xbl xmlns:xh="http://www.w3.org/1999/xhtml"
     xmlns:xf="http://www.w3.org/2002/xforms"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:ev="http://www.w3.org/2001/xml-events"
     xmlns:xi="http://www.w3.org/2001/XInclude"
     xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
     xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
     xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
     xmlns:saxon="http://saxon.sf.net/"
     xmlns:xbl="http://www.w3.org/ns/xbl"
     xmlns:xxbl="http://orbeon.org/oxf/xml/xbl"
     xmlns:nrs="http://nrs.foo/2014/xml/xbl">

<xbl:script src="/xbl/nrs/foo/foo.js"/>

<xbl:binding id="nrs-foo" element="nrs|foo" xxbl:mode="lhha binding value">

     <metadata xmlns="http://orbeon.org/oxf/xml/form-builder">
        <display-name lang="en">Foo</display-name>
        <templates>
            <view>
                <nrs:foo>
                    <xf:label ref=""/>
                    <xf:hint ref=""/>
                    <xf:help ref=""/>
                    <xf:alert ref=""/>
                </nrs:foo>
            </view>
        </templates>
    </metadata>

    <xbl:template>
        <xf:group xxbl:scope="outer">

            <xf:group xbl:attr="model context ref bind">

                <!-- Constructor -->
                <xf:group xxbl:scope="inner">
                    <xxf:script id="xf-en" ev:event="xforms-enabled">YAHOO.xbl.nrs.foo.instance(this).init();</xxf:script>
                </xf:group>

            </xf:group>

            <xf:input class="nrs-foo-json" ref="xxf:binding('nrs-foo')" xxbl:scope="inner" />

        </xf:group>
    </xbl:template>
</xbl:binding>

。。以及附带的JS模块:

代码语言:javascript
复制
(function() {
var $ = ORBEON.jQuery;
var Document = ORBEON.xforms.Document;

YAHOO.namespace("xbl.nrs");
YAHOO.xbl.nrs.Foo= function() {};
ORBEON.xforms.XBL.declareClass(YAHOO.xbl.nrs.Foo, "xbl-nrs-foo");
YAHOO.xbl.nrs.Foo.prototype = {

    fooInput       : null,

    init: function() {
        var self = this;

        self.fooInput = $(this.container).find( '.nrs-foo-json' );

        // get design time property
    },

};
})();

我如何修改XBL以获得一个设计时属性(比如一个名为'URL‘的字符串,我可以在表单设计器的属性面板上配置它),该属性存储在表单定义中,并且可以在JS代码中访问(在用注释标记的位置)?

EN

回答 1

Stack Overflow用户

发布于 2015-11-21 09:11:58

检查在autocomplete.xbl中是如何完成的,更具体地说是在<metadata>中的<control-details>的内容。在这种情况下,通过control Settings对话框在Form Builder中设置的值最终位于控件的resource="..."属性中,并在XBL中通过resource-avt变量进行访问。

(请注意,这里有一些复杂性,因为我们希望将值解释为AVT,并且变量在内部和外部作用域都可以访问,但希望这个示例能帮助您理解。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33787513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档