选择加载以前的数据- AngularJS

bs-select loading previous data - AngularJS

本文关键字:数据 AngularJS 加载 选择      更新时间:2023-09-26

我使用AngularStrap来选择选项,并在其中面临一些问题。
场景:
对于用户a,购物车条目为0。
对于用户b,购物车的物品为1。
最初在加载用户A的select时,select中的选项将为空,但在加载用户B的选项(即1项)并重新加载用户A的select后,它将在选项中获取用户B的购物车项。
下面是代码:

<select id="cartSelect" ng-model="user.cartId" ng-options="c.id as c.name for c in cartItems" bs-select class="select"></select>  

What I Tried:
我尝试在加载购物车之前将cartItems重置为空数组。

$scope.cartItems = [];  

我在控制台检查cartItems,它显示0。
但是它仍然在加载选项字段与其他用户的购物车项目。
在使用select而不是bs-select,它工作得很好。

我是否可以重置选择或修复此问题?
谢谢!

请提供更多细节,如jsFiddle。我可以提出两种可能的解决方案。

  • 尝试在设置数组后添加$scope.$apply()。可能你修改了角生命周期外的值而角不知道修改。所以只要使用apply让angular知道它。
  • 你没有在$scope下修改任何东西,任何模型都应该在$scope下。在您使用var cartItems = [];的情况下,正确的方法是定义$scope.cartItems并使用它。

它们可能不起作用,你应该总是发布更多的细节,比如你的整个控制器代码或相关代码。

找到解决方案:
问题是select不知道所做的更改,所以我不得不手动刷新选择ng-options。例如
我必须加上

$('#cartSelect').selectpicker('refresh');

当model(cartItems)在控制器中发生变化时,