JsViews:数据链接到<select> ... <option>的语法是什么......?

时间:2015-10-21 02:09:45

标签: drop-down-menu jsviews

&#13; &#13; var app = {&#13;     选择:{&#13;         事情:[&#13;             {姓名:&#34; name1&#34;,价值:&#34; thingValue1&#34; },&#13;             {姓名:&#34; name2&#34;,价值:&#34; thingValue2&#34; },&#13;             {姓名:&#34;名称3&#34;,价值:&#34; thingValue3&#34; }&#13;         ]&#13;         地方:[&#13;             {姓名:&#34; place1&#34;,价值:&#34; placeValue1&#34; },&#13;             {姓名:&#34; place2&#34;,价值:&#34; placeValue2&#34; },&#13;             {姓名:&#34; place3&#34;,价值:&#34; placeValue3&#34; }&#13;         ]&#13;     },&#13;     formData:{&#13;         selectedThing:&#34; thingValue1&#34;,&#13;         selectedPlace:&#34; placeValue1&#34;&#13;     }&#13; };&#13; &#13; var template = $ .templates(&#34; #theTmpl&#34;);&#13; &#13; template.link(&#34; #content&#34;,app);&#13; &lt; script src =&#34; https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"&gt;&lt; / script&gt;&#13; &lt; script src =&#34; http://www.jsviews.com/download/jsviews.js"&gt;&lt; / script&gt;&#13; &#13; &#13; &lt; div id =&#34; content&#34;&gt;&lt; / div&gt;&#13; &#13; &lt; script id =&#34; theTmpl&#34;类型=&#34;文本/ X-jsrender&#34;&GT;&#13;     &lt; select id =&#34; thingChoice&#34;数据链路=&#34; formData.selectedThing&#34;&GT;&#13;         &lt; option value =&#34; - &#34;&gt;请选择&lt; / option&gt;&#13;         {^ {for selections.things}}&#13;         &lt; option data-link =&#34; {value {:Value} text {:Name}}已选择{:formData.selectedThing}}&#34;&gt;&lt; / option&gt;&#13;         {{/对}}&#13;     &LT; /选择&GT;&#13;     &lt; select id =&#34; placeChoice&#34;数据链路=&#34; formData.selectedPlace&#34;&GT;&#13;         &lt; option value =&#34; - &#34;&gt;请选择&lt; / option&gt;&#13;         {^ {for selections.places}}&#13;         &lt; option data-link =&#34; {value {:Value} text {:Name}} selected {:formData.selectedPlace}}&#34;&gt;&lt; / option&gt;&#13;         {{/对}}&#13;     &LT; /选择&GT;&#13; &LT; /脚本&GT;&#13; &#13; &#13; 在这个jsfiddle中,我试图将我的几个项目列表与数据结构分开,我将POST到服务器: http://jsfiddle.net/hdra2e2d/1/ 这是问题所在:只有第一个项目在选择下拉菜单中有文字!一切看起来都是正确连接的,虽然我还没有找到任何超简单或简明的数据绑定到SELECT html表单元素的例子,所以也许我错过了一些最近可能的匹配到这个尝试? 背景细节:目的是将多个下拉列表的可用项目作为JSON获取,并将它们填充到&#34; app.selections&#34;中的离散字典数组中。成员,数据链接到他们并将他们用户选择的值存储在&#34; app.formData&#34;我将作为JSON发布到服务器的对象。

1 个答案:

答案 0 :(得分:1)

的语法
<option data-link="{value{:Value} text{:Name}} selected{:formData.selectedThing}}"></option>

非常奇怪。那个是从哪里来的?您似乎采用了与此问题相同的错误语法:jsViews - how do I set selected option from data

该选项的正确语法是

<option data-link="value{:Value} {:Name} selected{:~selected === Value}"></option>

(如该问题的答案所示:https://stackoverflow.com/a/18154317/1054484。)

另请参阅此处的最后一个示例:http://www.jsviews.com/#jsvplaying

以下是您的jsfiddle的更正版本: http://jsfiddle.net/BorisMoore/8dwdkp2d/

请注意,此语法允许您动态更新显示的NameValue值;尝试更改我的jsfiddle版本中的文本框值。

如果您不需要动态更新NameValue值,则替代语法为:

<option value="{{:Value}}" selected="{{:~selected === Value}}">{{:Name}}</option>

要了解数据链接表达式的语法,请参阅http://www.jsviews.com/#linked-elem-syntax