JSViews计算的observable链接到<select>而不是用.set()

时间:2016-01-20 15:22:55

标签: jsviews computed-observable

我正在尝试关联&lt; select&gt;在JSViews中计算可观察对象的框。 &lt; select&gt;当变量依赖变量时更新。但是,在&lt; select&gt;中选择新值时它不会触发我定义的set()函数。见https://jsfiddle.net/4y274h0L/3/ 模板 &LT;选择&GT;     {{for options}}         &lt; option value =&#34; {{:#data}}&#34; data-link =&#34; {:#data} selected {:~root.computedSelectedOption()==#data}&#34;&gt;&lt; / option&gt;     {{/对于}} &LT; /选择&GT; 计算可观察 function privateComputedOption(){     return vm.tempSelectedOption; } privateComputedOption.depends = [&#34; ~root.tempSelectedOption&#34;]; privateComputedOption.set = function(val){     $ .observable(vm).setProperty(&#34; tempSelectedOption&#34;,val);     的console.log(VAL); }; 非常欢迎任何帮助!

1 个答案:

答案 0 :(得分:1)

您实际上没有将select数据链接到计算的observable。对于双向绑定,它是select的绑定,当用户更改下拉选择时将调用setter。

<select data-link="computedSelectedOption()">
  {{for options}}
    <option value="{{:#data}}"
     data-link="{:#data} selected{:~root.computedSelectedOption()==#data}">  
    </option>
  {{/for}}
</select>

{^{:computedSelectedOption()}}

我更新了上面的jsfiddle:

https://jsfiddle.net/4y274h0L/4/

请参阅示例http://www.jsviews.com/#samples/form-els/array-binding

BTW在JsViews的下一次更新中将会简化,你不需要在选项上数据链接到selected{:~root.computedSelectedOption()==#data}"。只需选择<select data-link="computedSelectedOption()">上的数据链接即可。