[英]Selected value for angular select not be set on page refresh
我的angularjs select的選定值未在頁面刷新上設置。
經過大量調查,我發現當選擇為原始數據或刷新頁面時 ,選擇列表將有一個額外的空白選項,例如下面的第一個帶有值的?
:
<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>
注意上面的HTML是輸出。 我的角度視圖只有:
<select ng-model="question.answer" class="form-control" ng-options="opt as opt.value for opt in question.options" />
我不確定為什么這會阻止選擇正確的選項,因為問題仍然存在於question.answer。 請參閱以下模型的簡化版本:
var question = {
options: [
{
id: 1,
value: "1"
},
{
id: 2,
value: "2"
}
],
answer: {
id: 2,
value: "2"
}
};
我的理解是,在ng-options
,第一個opt
指定這是應該分配給ng-model
指定的變量的值。 換句話說,我將在options數組中分配一個對象給question.answer
,而不僅僅是值。 通過查看模型可以看到情況確實如此。
但是我不確定Angular將如何使用question.model
的值來確定哪個選項設置為選中狀態。
我想知道問題是否與以下事實有關:選項的值設置為question.options的索引,並且不能從question.answer
中找出答案的索引。
因此,我想我的問題是:-為什么當這個額外的<option value="?" selected="selected"></option>
時,沒有設置正確的選項<option value="?" selected="selected"></option>
<option value="?" selected="selected"></option>
存在嗎? -Angular如何確定如何使用模型來設置選定的選項(又名-選項值中那些有趣的索引是什么?)
抱歉,這篇文章太長了。 感謝閱讀。
更新:使用Chrome AngularJS Batarang擴展程序,將選擇列表設置為question.answer
的值例如:
{
$ref: $["options"][1]
}
這意味着選擇列表的值為“ 2”。
這就是使用選項索引的方式,但這就是我必須設置模型的方式嗎? 即使用$ref
等?
在查看您的操作后,我編輯了答案。
ng-options屬性具有一個表達式表達式,可以完成您正在談論的事情:
ng-options="opt as opt.Value for opt in question.options track by opt.id"
請參閱更新的小提琴: http : //jsfiddle.net/CkLEu/6/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.