Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 奥雷利亚-绑定<;选择>;不';t设置视图模型属性_Javascript_Aurelia - Fatal编程技术网

Javascript 奥雷利亚-绑定<;选择>;不';t设置视图模型属性

Javascript 奥雷利亚-绑定<;选择>;不';t设置视图模型属性,javascript,aurelia,Javascript,Aurelia,创建“选择”下拉列表时,视图模型上的“绑定”属性不会更新为默认选项 e、 g.鉴于该模型: export class App { @observable selected = 0; } 而这一观点 <select value.two-way="selected"> <option model.bind="1">1</option> <option model.bind="2">2</option> <op

创建“选择”下拉列表时,视图模型上的“绑定”属性不会更新为默认选项

e、 g.鉴于该模型:

export class App {

  @observable
  selected = 0;

}
而这一观点

<select value.two-way="selected">
  <option model.bind="1">1</option>
  <option model.bind="2">2</option>
  <option model.bind="3">3</option>
</select>

<span>
    The selected value is: ${selected}
</span>

1.
2.
3.
所选值为:${selected}
最初呈现页面时,您将看到“所选值为:0”-即使下拉列表将显示1。将下拉列表更改为2并返回到1,您将看到“所选值为:1”

我可以理解为什么你可能会有这种行为,但它与击倒不同(我正在转换一个旧的Durandal应用程序)。。。是否有办法强制viewmodel属性成为有效的选择选项之一

在这里进行现场直播:

注意:really world代码的目的不是将“selected”属性设置为不存在的值,下拉列表有一个值转换器,用于过滤选项,但不会强制viewmodel属性更新为默认选项


谢谢。

请在此处阅读弗雷德的解释:

如果使用repeat.for生成选项。由于触发更改事件的选项的延迟填充,它将正确设置初始值

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

${v}

仅供参考,请使用
value。双向
是不必要的,因为在选择/输入标记上默认情况下,值绑定是双向的。

关键是,即使select元素未显示所选值(它无法显示其选项中不存在的内容),它也没有选择所选值(它无法选择,因为它只能选择其选项中的内容)。我建议构建一个自定义元素或自定义属性,在其中验证选项中是否存在所选值,如果不存在,则将所选值更改为选项数组的第一项,或在表示所选值的选项中插入一项-value@Schadensbegrenzer可能是误解了你所说的,但是“它不能,因为它只能选择其选项中的内容“-我明白了,我不希望select更改为不存在的值,我希望viewmodel属性更改为select的实际值。我理解。但要自动发生这种情况,必须触发一个更改事件,如果该值不在选项列表中,则不会触发该事件
document.getElementById(“myselect”).value=“-1”
不会触发更改事件。因此,如果selectedValue在选项数组中不存在,我建议您将所选内容包装在自定义元素(或创建自定义属性)中,以添加选项项。另一个选项,如果默认值为零,则在选择列表中添加一个值为零的空选项项,然后使用验证来禁止其选择谢谢-我实际上在实际代码中使用了repeat.for。不幸的是,它没有在那里修复它(尽管它在我的简单plunkr中确实有效)。看不到问题!谢谢你的回答