使用 Angular ui-select 时模型出现意外变化

Unexpected change in a model when using Angular ui-select

我有一个 Angular ui-select 用于根据 selected 选项切换一些复选框(使用 ng-repeat 生成) .

复选框也可以手动切换,这就是问题所在。

场景如下:

  1. Select一个选项。某些复选框根据 $scope.recipes.available 模型上指定选项的 ingredients 属性 进行切换。
  2. 手动切换一个额外的复选框。
  3. Select select 上的不同选项。相应的复选框已正确切换。
  4. 切换回第一个 selected 选项。不仅切换最初在 ingredients 属性 上指定的复选框,还切换手动修改的复选框。在调试时,我发现 ingredients 属性 已被修改。

plunkr 说明了问题。

到目前为止,在阅读了无数范围界定问题(我是 Angular 的新手)并一次又一次地尝试重构我的代码之后,我仍然无法解决这个问题。

在继续尝试再次重构代码之前,我想了解这里发生了什么。

为什么要修改 ingredients 属性?

您的 bundle 数组正在您的 toggleBundleSelection 函数中更新。当配方选择改变时,没有任何东西可以重置阵列。由于 bundle 在 $scope 上,因此在控制器实例的生命周期内会保留这些值。