选择Angular JS ng,ng-repeat不起作用

时间:2016-12-13 13:43:26

标签: angularjs angularjs-ng-repeat

我正在尝试在ng-repet中设置ng-selected true 我的HTML:

    <select ng-model="editActivities.NewArea">
       <option  ng-repeat="area in areas" value="{{area.ID}}" ng-selected="editActivities.Area.ID==area.ID">{{area.Name}}</option>
    </select>

区域对象:

{Name : "City1", ID : "1"}
{Name : "City2", ID : "2"}
{Name : "City3", ID : "3"}

editActivities.Area.ID的值为2。

当我在editActivities.Area.ID和area.ID中打印值时,打印:

1 2 , 2 2 , 2 3 

并且仍未选择city2。

我也注意到所选的选项是:

<option value="? undefined:undefined ?"></option>

4 个答案:

答案 0 :(得分:1)

根据您的问题的详细信息,您的控制器代码类似于:

$scope.areas = [{
  Name: "City1",
  ID: "1"
}, {
  Name: "City2",
  ID: "2"
}, {
  Name: "City3",
  ID: "3"
}];

$scope.editActivities = {
  Area: {
    ID: "2"
  },
  NewArea: "2"
};

在这种情况下,您可以简单地使用ng-options指令并让ng-model绑定处理初始选择,如下所示:

<select ng-model="editActivities.NewArea" ng-options="area.ID as area.Name for area in areas">

这是一个有效的plunk

答案 1 :(得分:0)

你应该只使用ng-options:

<select ng-model="editActivities.NewArea" ng-options="area as area.Name for area in areas">
</select>

和往常一样,模型是角度的单点真实。因此,所选选项是存储在editActivities.NewArea中的选项。 因此,如果您想要选择第一个区域,请在控制器中使用以下内容:

$scope.editActivities = {
    NewArea: $scope.areas[0]
};

答案 2 :(得分:0)

请将您选择的ng更改为以下内容;有一个比较语句('==')而不是赋值('=')

ng-selected="editActivities.Area.ID=area.ID"

答案 3 :(得分:0)

不应使用ng-selected,而应设置模型值,即在控制器中设置 SELECT item.text FROM item JOIN shortwords ON item.item_id = shortwords.item_id WHERE shortwords.word = 'php' OR shortwords.word = 'it' OR shortwords.word = 'hr' 。基本上当有模型绑定到下拉列表时,它将忽略第一次ng-seleted。如果从select标签中删除ng-model,则会出现默认值。 试试下面的plunker。

没有ng-model - https://plnkr.co/edit/0Mj1LHhJgkrluWGQLdBn?p=preview

使用ng-mdoel - https://plnkr.co/edit/89PqDYdbfrGwUOHLIGMU?p=preview