0

我对 Angular JS 很陌生,但我一般都能理解 JS。Angular 有一个完全不同的方法,所以我不知道如何做到这一点:

得到一个对象数组,因此我可以按属性排序并按附加到输入“查询”的模型提供的字符串进行过滤。

一切正常,直到我需要保留按属性“ group”分组的对象,当数组由输入中键入的关键字过滤时。

<input ng-model='query' type='text'>    
<div ng-repeat='reservation in reservations | filter: query | orderBy: "group"'>
  <span as-reset-list='{{$last}}'></span>
  <h2 ng-show='CreateHeader(reservation.group)'>Group</h2>
  <div>Group:  {{ reservation.group }} - ID: {{ reservation.id }}</div>
</div>

要打印指示组的标题,我正在使用在currentGroup中定义的变量“”,$scope以便我可以与循环中的当前 object.group 进行比较。

function RestaurantCtrl($scope) {
  $scope.restaurants = [/* data */];
  $scope.currentGroup = '';

  $scope.CreateHeader = function(group){
    showHeader = (group!=$scope.currentGroup);
    $scope.currentGroup = group;
    return showHeader;
  }
}

但是,当进行没有结果的搜索并重复另一次搜索时,变量会丢失值或其他东西,因此分组无法按预期工作。

我怎样才能做到这一点?我试过创建一个指令,这样我就可以重置变量“currentGroup”的值,但它并不总是有效。

我的代码的一个工作示例在这里http://jsfiddle.net/5HZYt/

4

1 回答 1

2

问题可能与您的 ng-model 设置有关。看起来您正在将 ng-model 设置为一个简单的范围变量,并且当它发生更改时,ng-model 会失去绑定。为避免这种情况,请尝试将 ng-model 设置为对象的属性,以便在值更改时,angular 保留对该对象的引用。

像这样的东西:

$scope.modelObj = {prop:"This Value"};

然后..

<input ng-model='modelObj.prop' type='text'> 
于 2013-08-18T19:32:07.633 回答