0

我有使用ng-options填充2点选择的形式,如:ngOptions用新值成功刷新,但NG-模型不是数据绑定

<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周期一起工作,但它似乎不是我的问题("brands"下拉菜单成功刷新数据,它只是不发送数据)。

有没有人有什么想法和如何解决它?

+0

我认为这是你的问题中的一个错误,在你的服务中将'data.d'分配给'$ scope.product'。另外,'成功'已弃用'then',所以你可能会考虑使用它。 –

+0

您可以填充类别和品牌的产品。我猜测你正处于某种循环中,因为如果类别不存在(为什么不填充品牌)ng-change会再次被调用,并且可以在单击订单按钮 –

回答

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}; 

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

+0

之后安慰订单哇,谢谢!这正是我需要的。 :) –

+0

不客气!如果你需要别的东西,你可以问我什么;) – eliagentili