1

私が間違っていない限り、うまくいくはずの何かに問題があります。

次のように設定された key:value オブジェクトがあります。

{
  key1:"val1",
  key2:"val2",
  key3:"val3",
  key4:null
}

私の見解では、これがあります:

<div class="col-md-4" ng-repeat="(key, value) in list" ng-if="key != 'key1' || value != null">
            <ul>
                <li>{{ key }} : {{ value }} </li>
            </ul>
        </div>

問題: Works だけを使用するkey != 'key1'と、key1 のキーと値が表示されません。

value != nullもworksだけを使うと、key4は表示されません。

しかし、if ステートメントを || と組み合わせると、(または)、if ステートメント全体が無視されます。

ここで何か間違ったことをしていますか?

ここに例を投稿しました: http://jsfiddle.net/caxoyud2/

事前にサンクス!

4

2 に答える 2

11

両方を消したい場合は、'||' ではなく '&&' にする必要があります。!(key == 'key1' || value == null)、'||' 内で否定を取った場合 && になります。

<div class="col-md-4" ng-repeat="(key, value) in list" ng-if="key != 'key1' &&     value != null">
        <ul>
            <li>{{ key }} : {{ value }} </li>
        </ul>
</div>    

また

<div class="col-md-4" ng-repeat="(key, value) in list" ng-if="!(key == 'key1' || value == null)">
    <ul>
        <li>{{ key }} : {{ value }}</li>
    </ul>
</div>
于 2015-02-03T12:20:39.113 に答える
0

以下のデモをご覧ください

ステートメントだけですべて問題ありません

(true || false) = true

var someModule = angular.module('myModule', []);

someModule.controller('someControler', function($scope) {

  $scope.list = {
    key1: "val1",
    key2: "val2",
    key3: "val3",
    key4: null
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myModule">
  <div ng-controller="someControler">
    <div class="col-md-4" ng-repeat="(key, value) in list" ng-if="!(key != 'key1' && value != null)">
      <ul>
        <li>{{ key }} : {{ value }}</li>
      </ul>
    </div>
  </div>
</div>

于 2015-02-03T12:20:10.107 に答える