【问题标题】:ng-repeat with dynamic array : view not updated带有动态数组的 ng-repeat:视图未更新
【发布时间】:2015-07-01 19:04:02
【问题描述】:

我在这样的块中有一些复选框:

<div ng-show="searchIn.IS" class="filterContent">
    <div ng-click="toggleFilter('IS')">
       <span class="{{filters.IS}}FilterIcon"></span> 
       Information System :
    </div>
    <div ng-show="filters.IS">
        <md-checkbox ng-repeat="IS in ISList" ng-click="setISSearch(IS)" ng-checked="isInISSearch(IS)">
            {IS}}
        </md-checkbox>
    </div>
</div>
<br />
<div ng-show="searchIn.area" class="filterContent">
   <div ng-click="toggleFilter('area')">
      <span class="{{filters.area}}FilterIcon"></span>
      Area :
   </div>
   <div ng-show="filters.area">
     <md-checkbox ng-repeat="area in filterAreaList" ng-click="setAreaSearch(area)" ng-checked="isInAreaSearch(area)" ng-show="isInCurrentAreas(area)">
         {{area}}
     </md-checkbox>
   </div>
</div>

所以问题是每次我从 ISList 块中选中或取消选中复选框时,filterAreaList 都会更改。但是视图没有更新,所有区域仍然显示。 我也试过ng-if而不是ng-show

$scope.filterAreaList = [];

$scope.getAreaFilters = function ()  {
    $scope.searchedIS = $scope.ISList.slice();
    for (var i = $scope.searchedIS.length; i >= 0; i--) {
        if ($scope.searched.IS.indexOf($scope.searchedIS[i]) === -1)
            $scope.searchedIS.splice(i, 1);
    }
    for (var i = 0; i < $scope.areaList.length; i++) {
        for (var j = 0; j < $scope.searchedIS.length; j++)
            if ($scope.hasArea($scope.searchedIS[j], $scope.areaList[i]))
                $scope.filterAreaList.push($scope.areaList[i]);
    }
};

$scope.isInCurrentAreas = function (area) {
    if ($scope.filterAreaList.indexOf(area) === -1)
        return false;
    return true;
};

其他一些话题指向这个:http://www.bennadel.com/blog/2443-rendering-dom-elements-with-ngrepeat-in-angularjs.htm

但我真的不知道如何将其应用于我的案例。

【问题讨论】:

    标签: javascript html angularjs angular-material


    【解决方案1】:

    好吧,我实际上错过了一些事情:

    为了使它工作,我在getAreaFilters() 函数中添加了:$scope.filterAreaList = [];,并在setAreaSearch(area) 中调用getAreaFilters()

    就是这样。

    【讨论】:

      猜你喜欢
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 2014-07-11
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多