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

ngOptions successfully refreshes with new values, but ng-model is not data-binding

我有 2 个 select 表单使用 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>

当第一个下拉列表 selected 时,它会触发 $http 调用来填充第二个下拉列表,如下所示:

$scope.find_brands = function(category){
  $http
    .get('Default.aspx/Find_Brands', {category: category})
    .success(data){$scope.products = data.d};
};

这会使用新值正确填充 "brands" 下拉列表。但是,当我转到select一个品牌时,ng-model并没有改变。测试时,我收到一个空值。我已经研究过 $scope.$apply 以使用 $digest 循环,但似乎这不是我的问题("brands" 下拉列表成功获取刷新数据,它只是不发送数据出去)。

有没有人知道发生了什么以及如何解决它?

我一直在为您创建这个简单的示例: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};

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