Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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 无法在页面刷新时设置角度选择的选定值_Javascript_Angularjs - Fatal编程技术网

Javascript 无法在页面刷新时设置角度选择的选定值

Javascript 无法在页面刷新时设置角度选择的选定值,javascript,angularjs,Javascript,Angularjs,页面刷新时未设置my angularjs select的选定值 如果我导航到另一个视图,然后再次导航回来,则会设置 select的模型保存到本地存储,并初始化到作用域onload中 我已经检查了范围中的数据在两种情况下是否相同,即来回导航和刷新页面。数据完全相同 经过大量调查,我发现当选择是原始的,或当页面刷新时,,选择列表将有一个额外的空白选项,就像下面第一个值为?的选项: <select ng-model="question.answer" class="form-control"

页面刷新时未设置my angularjs select的选定值

  • 如果我导航到另一个视图,然后再次导航回来,则会设置
  • select的模型保存到本地存储,并初始化到作用域onload中
  • 我已经检查了范围中的数据在两种情况下是否相同,即来回导航和刷新页面。数据完全相同
经过大量调查,我发现当选择是原始的,或当页面刷新时,,选择列表将有一个额外的空白选项,就像下面第一个值为
的选项:

<select ng-model="question.answer" class="form-control" ng-options="opt as opt.value for opt in question.options" >
    <option value="?" selected="selected"></option>
    <option value="0">1</option>
    <option value="1">2</option>
</select>
我的理解是,在
ng options
中,第一个
opt
指定这是应分配给
ng model
中指定变量的值。换句话说,我将把选项数组中的一个对象分配给
question.answer
,而不仅仅是值。通过查看模型,我可以看出情况就是这样

但我不确定Angular将如何使用
question.model
中的值来确定哪个选项被设置为选中

我想知道这个问题是否与选项的值被设置为question.options的索引这一事实有关,它无法从
question.answer
中得出答案是哪个索引

所以,我想我的问题是: -当存在此额外的
时,为什么没有设置正确的选项? -Angular如何确定如何使用模型设置所选选项(aka-选项值中那些有趣的索引是什么?)

对不起,这篇文章太长了。谢谢你的阅读

更新: 使用Chrome AngularJS Batarang扩展名,选择列表设置为
question.answer
的值如下:

 { 
    $ref: $["options"][1]
 }
这意味着选取列表的值为“2”


这就是它使用期权指数的方式,但这就是我设置模型的方式吗?i、 e.使用
$ref
等?

我在看了你在做什么之后编辑了答案

ng options属性有一个track by expression,可以执行您所说的操作:

ng-options="opt as opt.Value for opt in question.options track by opt.id"

查看更新的提琴:

我在查看了您的操作后编辑了答案

ng options属性有一个track by expression,可以执行您所说的操作:

ng-options="opt as opt.Value for opt in question.options track by opt.id"

查看更新的提琴:

我在查看了您的操作后编辑了答案

ng options属性有一个track by expression,可以执行您所说的操作:

ng-options="opt as opt.Value for opt in question.options track by opt.id"

查看更新的提琴:

我在查看了您的操作后编辑了答案

ng options属性有一个track by expression,可以执行您所说的操作:

ng-options="opt as opt.Value for opt in question.options track by opt.id"

查看更新的小提琴:

您缺少一个“在form controlCheers@M21B8的末尾。这只是因为对本例进行了编辑。真正的代码是有效的。我已经编辑了我的问题。我想可能是这样的,只是想检查一下!当您使用
ng options
时,不要硬编码任何
元素,除了带有空值的
,空值表示“未选择”。嗨,黑洞。我没有硬编码任何
元素。我可能没有说清楚,但问题中显示的html是我在ChromeDevTools中查看的输出。我只是在用一个普通的
。我将更新我的问题以澄清这一点。你错过了一个“在form controlCheers@M21B8的末尾。这只是因为对本例进行了编辑。真正的代码是有效的。我已经编辑了我的问题。我想可能是这样的,只是想检查一下!当您使用
ng options
时,不要硬编码任何
元素,除了带有空值的
,空值表示“未选择”。嗨,黑洞。我没有硬编码任何
元素。我可能没有说清楚,但问题中显示的html是我在ChromeDevTools中查看的输出。我只是在用一个普通的
。我将更新我的问题以澄清这一点。你错过了一个“在form controlCheers@M21B8的末尾。这只是因为对本例进行了编辑。真正的代码是有效的。我已经编辑了我的问题。我想可能是这样的,只是想检查一下!当您使用
ng options
时,不要硬编码任何
元素,除了带有空值的
,空值表示“未选择”。嗨,黑洞。我没有硬编码任何
元素。我可能没有说清楚,但问题中显示的html是我在ChromeDevTools中查看的输出。我只是在用一个普通的
。我将更新我的问题以澄清这一点。你错过了一个“在form controlCheers@M21B8的末尾。这只是因为对本例进行了编辑。真正的代码是有效的。我已经编辑了我的问题。我想可能是这样的,只是想检查一下!当您使用
ng options
时,不要硬编码任何
元素,除了带有空值的
,空值表示“未选择”。嗨,黑洞。我没有硬编码任何
元素。我可能没有说清楚,但问题中显示的html是我在ChromeDevTools中查看的输出。我只是在用一个普通的
。我将更新我的问题以澄清这一点。