2015-07-19 164 views
0

我使用ng-repeat生成一個表,它循環用戶提交的數據。在ng-repeat的內部,我有一個字段,一個select,我使用另一個ng-repeat來構建一個類型列表。這也會生成適當的選擇。但是,我無法弄清楚如何將選擇默認爲用戶的價值;例如用戶選擇書籍作爲類型,當用戶重新加載頁面時,我希望選擇「書籍」預選。Angularjs默認選擇所選值

<tr ng-repeat="item in userData" ng-include="'templates/bookmarkrow.html'"></tr> 
... 
<select ng-model="item.type" ng-options="option.name for option in typeOptions track by option.value" class="form-control hidden"></select> 

我以爲ng-model會將select與item.type的值綁定起來。有任何想法嗎?

其他細節

typeOptions是對象的數組;例如[{'name':'某個名字','價值':'有價值',...}]。至於數據,我知道AngularJS不存儲數據。假設在這個例子中數據來自數據存儲;無論是數據庫還是本地存儲。更大的一點是我將在客戶端加載數據,並希望在選擇中指明它。

+0

我們可以看到示例userData嗎? typeOptions來自哪裏?我們需要更多的信息,目前它非常模糊。 –

+0

頁面重新加載後,角度應用程序將重新初始化,因此它不會具有先前選擇的值,您可能必須在localstorage/cookie中保存值,當用戶選擇它時,然後在頁面加載時獲取該值並更新選擇 – codin

回答

0

我重寫我的代碼使用該選項NG重複,而是採用在選擇NG選項的值。之後,我使用ng選項來決定選擇哪個選項。

<select class="form-control hidden"> 
    <option selected-value="{{option.value}}" ng-selected="{{item.type == option.value}}" ng-repeat="option in typeOptions">{{option.name}}</option> 
</select> 
2

由於角度不會持續數據跨頁面重新加載數據將丟失時發生完全重新加載。如果您正在使用角路由或ui-router,那麼您可以將數據保存在單身工廠中。

要跨頁面重新加載保存數據,您可以(如上所述)使用本地存儲,cookies或將其存儲在應用程序的後端。

要初始化只可以使用NG-INIT