当ng-model被更改时,表单单选按钮引用旧内存 - 中断ng-check

时间:2016-11-02 20:05:01

标签: javascript angularjs

Angular 1。*

我有:

  <div class="filter-column">
    <div class="filter-title">Market</div>
    <div class="bottom-line"></div>
    <div class="overflow-container">
        <input type="radio" value="all" name="marketRadio" 
          ng-checked="true" class="resetAll" ng-model="filter.markets" 
          ng-change="radioMap('market')" checked>All
      <div ng-repeat="choice in markets| orderBy: 'name'">
        <input type="radio" value="{{choice.name}}" name="marketRadio"
          ng-change="radioMap('market')" ng-model="filter.markets" >
        {{choice.description}}
      </div>
    </div>

在控制器中我有:

  var ppvFilter = {
    regions: [],
    markets: [],
    dealers: []
  };



  $scope.$watchCollection(function() {
    return ppvFilter;
  },
    function(newValue) {
      $scope.regions = newValue.regions;
      $scope.markets = newValue.markets;
      $scope.dealers = newValue.dealers;
  });

当我使用ppvFilter.markets.length = 0; ppvFilter.markets = ppvFilter.markets.concat(['a', 'b', 'c'])以编程方式(而不是页面刷新)刷新单选按钮列表时,单选按钮选项列表将更新为gui中的内容。但是,ng-checked="true"不再适用于all,并且在列表更新后未选中。

我怀疑这是因为角度形式引用了旧内存,即使它显示了新的单选按钮列表。

2 个答案:

答案 0 :(得分:1)

来自ngChecked的角度documentation请注意,此指令不应与ngModel一起使用,因为这可能会导致意外行为。

答案 1 :(得分:0)

我想通了......默认项目是在ng-repeat中。 Table_Date + 60 > Today()在现实生活中没有多大用处。

参考:

Radio button checked by default when using ng-repeat