ngOptions使用新值成功刷新,但ng-model不是数据绑定

时间:2016-02-26 20:53:24

标签: angularjs drop-down-menu angular-ngmodel ng-options angular-digest

我有两个使用getList ()填充的选择表单,例如:

ng-options

当选择第一个下拉列表时,它会触发<select ng-options="item.id as product.category for product in products" ng-model="order.category" ng-change='find_brands(order.category)' ></select> <select ng-options="brand.id as brand.name for brand in brands" ng-model="order.brand" ></select> <button ng-click='Get_Products(order)>ORDER</button> 调用以填充第二个下拉列表,如下所示:

$http

这会使用新值正确填充$scope.find_brands = function(category){ $http .get('Default.aspx/Find_Brands', {category: category}) .success(data){$scope.products = data.d}; }; 下拉列表。但是,当我选择品牌时,"brands"不会改变。测试时,我收到一个空值。我已调查ng-model以使用$scope.$apply周期,但似乎这不是我的问题($digest下拉列表成功获取刷新数据,它只是不发送数据出)。

有没有人知道最新情况以及如何解决?

1 个答案:

答案 0 :(得分:1)

我一直在为你创建这个简单的例子:http://jsbin.com/degece/edit?html,js,console,output

在您的代码中存在一些错误。

在此行中,您使用item.id而不是product.id

<select ng-options="item.id as product.category for product in products" ng-model="order.category" ng-change='find_brands(order.category)' ></select>

在这里你有一个引用拼写错误,你在Get_Products之前不需要引用

<button ng-click='Get_Products(order)>ORDER</button>

最后,您需要将调用结果分配给$ scope.brands 变量

.success(data){$scope.products = data.d};

在我的示例中,您可以看到一些最佳实践实现,例如模型初始化。