2015-07-19 165 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