AngularJS:隐藏或显示对象,具体取决于json数组的键值

时间:2016-03-15 13:46:46

标签: angularjs json angularjs-ng-repeat

我是棱角分明的新人,我有这两个问题:
我收到了json数据,我希望在我的视图中显示不同的文本,这取决于我的json的密钥。
示例:如果密钥为rcshello this is rcs将显示在我的视图中,或者密钥为bankhello this is my bank将显示在我的视图中。

第二个问题:我只想在“可见”==“真”的情况下显示我的对象。

所以我尝试创建一个与我的json数据(屏幕截图)具有相同键的对象,并具有我想要显示的值。在那之后,我不知道如何管理这个。如果键“visible”==“true”,则更少显示我的对象。

现在,我只能成功显示我的json数据的密钥。

This is my json

以下是观点:

<ion-view view-title="Liste des mentions">
  <ion-content>
    <div class="item item-divider">
      <button class="ion-ios-minus-outline" type="button" name="button"></button>
      <button style="float:right;"class="ion-arrow-move"type="button" name="button" ng-click="moovelement()"></button>
    </div>
    <ul class="list" ng-repeat="(key,value) in mention">

        <li class="item" ng-style="displaymentions">{{key}}

        </li>

    </ul>
    <button class="ion-ios-plus-outline" type="button" name="button" ng-click="addmention()">Ajouter des mentions</button>

  </ion-content>
</ion-view>

和控制器:

.controller('MentionsCtrl',['$scope','$stateParams','$state','sendtoken',
 function($scope, $stateParams, $state,sendtoken) {



  sendtoken.send(sessionStorage.getItem('token'))
    .then(function(userdata){

      var mentionstva = userdata.data.mentions.vat.visible;
      sessionStorage.setItem('usermentionstva',mentionstva);

      var mentionsretard = userdata.data.mentions.delay.visible;
      sessionStorage.setItem('usermentionsretard',mentionsretard);


      var mentionsbank = userdata.data.mentions.bank.visible;
      sessionStorage.setItem('usermentionsbank',mentionsbank);

        console.log(mentionsbank);
      var mentionsperso = userdata.data.mentions.free.visible;
      sessionStorage.setItem('usermentionsperso',mentionsperso);


      var mentionscga = userdata.data.mentions.cga.visible;
      sessionStorage.setItem('usermentionscga',mentionscga);

      var mentionsrcs = userdata.data.mentions.rcs.visible;
      sessionStorage.setItem('usermentionsrcs',mentionsrcs);



      $scope.mention = userdata.data.mentions;



      if(userdata.data.mentions.visible == "false"){


        $scope.displaymentions = {"display": "none"};
      }
    console.log($scope.mention);


    });

     $scope.jsontab = {
         "bank": "Coordonnées bancaires",
         "vat": "TVA non applicable",
         "delay": "Retard de paiement",
         "rcs": "Immatriculation RCS",
         "cga": "Centre de gestion agrée",
         "free": "Mention personnelle"
     };



  $scope.retard = function(){
      $state.go('app.retard');
  };
  $scope.immatriculation = function(){
      $state.go('app.immatrcs');
  };
  $scope.addmention = function(){
    $state.go('app.addmentions');
  };



}])

2 个答案:

答案 0 :(得分:1)

在第一期中试试这个:

<ul ng-repeat="mention in mentions"></ul>
  <li ng-if="mention === rcs"> Hello this is rcs </li>
  <li ng-if="mention === bank"> Hello this is Bank </li>
</ul>

第二期:
ng-if="visible===true"添加到您的对象

或在您的控制器中,您可以将$scope变量设置为默认 false ,当您调用对象时,该时间使其 true 然后在ng-if中使用它以获得真实条件。

答案 1 :(得分:1)

你已经有了答案,但我认为这个答案更简单,并且符合你已经拥有的json,而不需要你在控制器中定义任何新内容。

<ul class="list" ng-repeat="(key,value) in mention" ng-if="mention[key].visible">
     <li class="item" ng-style="displaymentions">Hello this is my {{key}}</li>
</ul>