簡體   English   中英

未在頁面刷新上設置角度選擇的選定值

[英]Selected value for angular select not be set on page refresh

我的angularjs 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>

注意上面的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM