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};
在我的示例中,您可以看到一些最佳实践实现,例如模型初始化。
我有 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};
在我的示例中,您可以看到一些最佳实践实现,例如模型初始化。