bs-select加载以前的数据 - AngularJS

时间:2014-08-05 06:44:49

标签: javascript angularjs select angular-strap

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

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

我尝试了什么
在加载购物车之前,我尝试将cartItems重置为空数组。

$scope.cartItems = [];  

我在控制台中检查了cartItems,它显示为0.
但它仍在加载选项字段与其他用户的购物车项目 在使用select而不是bs-select时,它工作正常。

无论如何我可以重置选择或解决此问题吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

它们可能不起作用,您应该始终发布更多详细信息,例如整个控制器代码或相关代码。

答案 1 :(得分:0)

找到解决方案:
问题是select没有意识到所做的更改,所以我不得不手动刷新select ng-options。即
我不得不添加

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

随着模型(cartItems)在控制器中发生变化,

附加链接中提供了更多详细信息:Handle changes to option elements