0

どういうわけかフィルターでそれを行う必要があると思いますが、理解できませんでした。以下のコードは私が作成したものですが、非常に非効率的であると確信しています

$scope.isInList = function(ident){ 
  var answer = false;

  if($scope.List){ // stops it from firing before it has something to check against
      var length = $scope.Lister.list[number].ingr.length;
      for (var i=0; i < length; i++){
          if($scope.Lister.list[number].thing[i].id == ident){ var answer = true;}

      }
  }
  return answer;
};

何も見つからない場合、関数は false を返します。

ng-hide="isInList(ident)"

Break を追加できることがわかりました。少し良くするために true の場合に、私はまだより甘い角度の方法を望んでいます。

編集:

ng-repeat tho で 1 つのオブジェクトを削除したいだけです。

<ul>
  <li ng-repeat="item in List">item.name <button ng-click="addToAnotherList(item.id)">Add</em></li>
</ul>

フィルターで要素を削除するだけにできますか?

また、フィルターは変数の配列をチェックできますか?

別のリストから未定義の数の id-s をチェックするフィルターが必要です (アイテムがまだそのリストにないことを確認するため)

検索結果ごとに ng-hide が実行され、for ループがリスト内のすべての値をチェックし、重複を避けるようになりました

4

2 に答える 2

1

より良い方法は、リストのカスタム フィルター関数を作成することです。ng-repeat

ng-hideそうすれば、フィルターによって処理されるため、を処理する必要はありません。

あなたのことを知らずに<html/>

私はあなたがこのようなものを持っていると仮定しています:

<ul>
    <li ng-repeat="item in List"></li>
</ul>

|filter:someFunctionに aを追加したいng-repeat

<ul>
    <li ng-repeat="item in List| filter: myFilterFunction"></li>
</ul>


$scope.myFilterFunction = function(item){ 
   if(item.SomeProperty === Something){
       return item;
   }
};

jsfiddle の簡単な例。

于 2013-05-14T22:14:02.913 に答える
0

Mark によって既に提供されているフィルター ソリューションを 2 番目に使用しますが、ng-hide を使用したソリューションも提供します。 :

$scope.isInList = function(ident){ 

  return $scope.List && 
         $scope.List.thing.filter(function (item) { return (item.id == ident); }).length>0;
}

配列名については 100% 確信が持てませんでしたが、一般的な考え方は機能します。

于 2013-05-14T22:46:04.713 に答える