Aurelia - 绑定<select>没有设置视图模型属性

时间:2018-06-06 08:52:11

标签: javascript aurelia aurelia-binding

创建选择下拉列表时,视图模型上的绑定属性不会更新为默认选项。 例如鉴于此视图模型: 出口类App {   @observable   selected = 0; } 而这个观点 &lt; select value.two-way =&#34; selected&#34;&gt;   &lt; option model.bind =&#34; 1&#34;&gt; 1&lt; / option&gt;   &lt; option model.bind =&#34; 2&#34;&gt; 2&lt; / option&gt;   &lt; option model.bind =&#34; 3&#34;&gt; 3&lt; / option&gt; &LT; /选择&GT; &LT;跨度&GT;     所选值为:$ {selected} &LT; /跨度&GT; 最初呈现页面时,您将看到&#34;所选值为:0&#34; - 即使下拉列表显示1.将下拉列表更改为2并返回1,您将看到&#34;所选值为:1&#34;。 我可以看出为什么你可能会有什么行为,但它与Knockout不同(我转换旧的Durandal应用程序).​​..有没有办法强制viewmodel属性成为有效的选择选项之一? 现场直播:http://plnkr.co/edit/v4y3k3TcEzOrm4P2ulNy?p =preview 注意:真正的世界代码并不是为了设置所选的&#39;属性为不存在的值,下拉列表有一个值转换器,用于过滤选项但不强制viewmodel属性更新为默认选项。 谢谢。

1 个答案:

答案 0 :(得分:1)

请阅读Fred的解释:https://github.com/aurelia/binding/issues/686

如果使用repeat.for构建选项。它将正确设置初始值,因为激活更改事件的选项延迟。

<select value.bind="selected">
  <option repeat.for="v of [1,2,3]" model.bind="v">${v}</option>
</select>

仅供参考,使用value.two-way是不必要的,因为默认情况下,值绑定在select / input标签上是双向的。