Dojo将索引为0的数据从数组绑定到窗口小部件

时间:2015-03-20 16:09:18

标签: javascript web dojo

我有一个 java脚本对象,我试图将对象绑定到索引0处的窗口小部件,但是我无法绑定到数组对象。

我不希望为数组中的每条记录重复小部件,我只想将小部件仅绑定到索引为0的companyList中的salary1。

阵列:

data = new Stateful({
companyList:[{id:1, salary1:300.00, salary2:200.00, salary3:400.00}]
});

HTML:

<span title="(a) Salary For Month One :" data-dojo-type="dijit/_WidgetBase"
data-dojo-props="target:at(data,'companyList')">             

<s:textfield type="text" name="salary1" required="true"
    id="Salary1Id" placeholder="Salary Month One (e.g. 1234.00)"
    trim="true" data-dojo-type="dijit/form/CurrencyTextBox"                                   
    data-dojo-props="value:at('rel:','salary1'),uppercase:true ,constraints:{fractional:true}, currency:'USD'"/>    

</span>

2 个答案:

答案 0 :(得分:1)

这与此处的示例非常相似:

http://dojotoolkit.org/reference-guide/1.10/dojox/mvc/WidgetList.html#id4

我假设您正在使用WidgetList在div设置中包装dijit / _WidgetBase,使用_InlineTemplateMixin并设置子项正确吗? 与此类似:

<div data-dojo-type="dojox/mvc/WidgetList"
            data-dojo-mixins="dojox/mvc/_InlineTemplateMixin"
            data-dojo-props="children: at(searchRecords, 'items')">
            <script type="dojox/mvc/InlineTemplate">

实际上,你的问题也可能与使用新的Stateful而不是getStateful()有关,getStateful会处理数组。

所以它对我有用:

sdata = getStateful({
companyList:[{id:1, salary1:300.00, salary2:200.00, salary3:400.00}]
});

而且:

<div id="main">
    <div data-dojo-type="dojox/mvc/Group"
         data-dojo-props="target: sdata">
        <h4>Declarative WidgetList using data-mvc-child-type </h4>

        <div data-dojo-type="dojox/mvc/WidgetList"
             data-dojo-props="children: at('rel:', 'companyList')"
             data-mvc-child-type="dijit/form/CurrencyTextBox"
             data-mvc-child-props="value: at(this.target, 'salary1'),
                                                class: 'row'">
        </div>
    </div>
    <h4>Declarative WidgetList using a dojox/mvc/InlineTemplate </h4>

    <div data-dojo-type="dojox/mvc/WidgetList"
         data-dojo-mixins="dojox/mvc/_InlineTemplateMixin"
         data-dojo-props="children: at(sdata,'companyList')">
        <script type="dojox/mvc/InlineTemplate">
            <div>
                <span type="text" name="salary1" required="true"
                      id="Salary1Id" placeholder="Salary Month One (e.g. 1234.00)"
                      trim="true" data-dojo-type="dijit/form/CurrencyTextBox"
                      data-dojo-props="value:at('rel:','salary1'),uppercase:true ,constraints:{fractional:true}, currency:'USD'"/>

                </span>
            </div>
        </script>
    </div>
    <p>Updates to either set of CurrencyTextBoxes will be reflected in the other
</div>

答案 1 :(得分:0)

在对dojox mvc进行一些研究之后,我能够根据记录的索引值将单个表单元素绑定到有状态数组对象,例如数组中的0,1,2,3 ...。 p>

这是开发人员可能正在处理数组对象的有效方案,该数组对象可能在某些时候返回单个记录而不是数组或记录。如果开发人员希望将该单个记录绑定到表单字段元素,则他们可以使用索引一次访问一个记录并显示给用户。他们可以查看以下解决方案。

数据     data = new Stateful({     companyList:[{id:1,薪水1:300.00,薪水2:200.00,薪水3:400.00}]     });

<强> HTML

解决方案创建另一个访问数组记录索引的组:

<span data-dojo-type="dojox/mvc/Group" data-dojo-props= "target: at('rel:', 0)">


<span title="(a) Salary For Month One :" data-dojo-type="dijit/_WidgetBase"
data-dojo-props="target:at(data,'companyList')">             

<span data-dojo-type="dojox/mvc/Group" data-dojo-props= "target: at('rel:', 0)">
<s:textfield type="text" name="salary1" required="true"
    id="Salary1Id" placeholder="Salary Month One (e.g. 1234.00)"
    trim="true" data-dojo-type="dijit/form/CurrencyTextBox"                                   
    data-dojo-props="value:at('rel:','salary1'),uppercase:true ,constraints:{fractional:true}, currency:'USD'"/>    
</span>
</span>