清除数组后不会更新 ng-options 绑定变量

ng-options bound variable is not updated after clearing the array

我正在使用一个数组来填充 ng-options 的列表,并将 属性 绑定到所选项目。清空数组后,绑定变量myObject.selectedItem保留最后选中的一项的值。

HTML:

<select ng-model="myObject.selectedItem" ng-options="item.Id as item.Name for item in myArrayList | orderBy:'Id'" required>
    <option value="">Select something</option>
</select>

JS:

$scope.myArrayList = [ { Id: 1, Name: "Item 1" }, { Id: 2, Name: "Item 2" } ];
$scope.myObject = { selectedItem: null };

...选择 项目 2 后:

$scope.myArrayList.length = 0;              // Clears the array
console.log($scope.myObject.selectedItem);  // Prints: 2

这是正常行为吗?

存储在... .selectedItem中的值被保存,并且不绑定到原始值的来源。

所以是的,这是正常的预期行为。

这是完全正常的行为。

ng-model 是独立于后备数组呈现的选项的绑定。因此,更改 ng-options 的来源对 ng-model 绑定 属性.

没有影响

如果要清空数组,还需要在设置后备数组长度后将 myObject.selectedItem 设置为 null。

如果您打算经常执行此类操作并希望它动态更新 myObject.selectedItem,您可以随时在 myArrayList 上注册一个观察者,如果长度更新为 0.