6

试图找出当绑定的选定选项不再存在时模型不更新的原因。我希望模型的属性更新为未定义/空/空字符串。

情况:一个人使用过滤select器驱动另一个人。select做出选择后,转到原件select并选择另一个选项。select过滤器将按预期删除第二个选项,但第二个的模型属性select将保持不变。

问题:当您传递模型时,它将填充错误/以前的值。此外,使用 Angular 验证,select需要......表单在技术上是“有效的”,因为模型具有属性的值(先前的值)。

HTML:

<select name="Category" ng-model="selectedCategory" 
       ng-options="item.name as item.name for item in categories">
   <option value="">All Categories</option>
</select>

<select name="SubCategory" ng-model="selectedSubCategory" 
       ng-options="item.name as item.subCategory for item in categories | filter:selectedCategory">
  <option value="">All SubCategories</option>
</select>

模型:

app.controller('MainCtrl', function($scope) {
   $scope.categories = [{
      "id": "1",
      "name": "Truck",
      "subCategory": "Telescope"
   }, {
      "id": "2",
      "name": "Truck",
      "subCategory": "Hazmat"
   }, {
      "id": "3",
      "name": "Van",
      "subCategory": "Mini"
   }];
});

我相当确定我可以将 ng-change 函数绑定到第一个函数以强制它更新模型,但是有更好的方法吗?

演示问题的示例Plunker

4

1 回答 1

6

试试这个方法:

$scope.$watch('selectedCategory', function(selectedCategory){
    $scope.selectedSubCategory = null;
});
于 2014-09-18T18:08:45.757 回答