为什么 Angular 仍然添加未知选择?

Why does Angular still add unknown selection?

我是 Angular 的新手,所以我遗漏了一些微不足道的东西:

<select ng-model="shop_index">
  <option ng-repeat="elem in shops" 
          ng-selected="{{$first}}" 
          ng-value="{{$index}}">{{elem.name}}</option>
</select>

当我查看创建的 HTML 代码时,它看起来很好,除了那个未知条目。我将 ng-init="0" 添加到 HTML 代码——没有变化。我在控制器中初始化模型值(在获取数据之前)——没有变化。我在获取数据后初始化模型——没有变化。这个未知的选项只是焊接:-).

我不是在问如何摆脱它(比如手动添加它,但隐藏),而是如何修复上面的代码以自动删除它。

您需要将 ngOptions 与 select 一起使用,否则在您 select 一个值之前,这些值将无法正确链接到 select。这样做的原因我现在不明白,但基本思想是你传入的值将对应于一个数组索引,而不是你可能习惯的值。

作为结果的输入元素的值应该对您没有影响。

ngOptions 指令应采用 value as label for object in collection.

的形式

如果 HTML 中的值是 undefined,那是因为上面的表达式不正确 - 请确保 value 指向一个有效值。

你应该使用这个:

在您的控制器中

$scope.shop_index = $scope.shops[0];

在您的视图中

<select ng-model="shop_index" ng-options="elem as elem.name for elem in shops"></select>