2016-03-15 118 views
0

我是角度新手,我有这2个问题:
我收到了json数据,我想在我的视图中显示不同的文本,这取决于我的JSON的关键。
例如:如果密钥是rcs,hello this is rcs将显示在我的视图中,或者如果密钥为bankhello this is my bank将显示在我的视图中。AngularJS:根据json数组的键值隐藏或显示对象

而第二个问题:我只想显示我的对象,如果“可见”==“真”。

所以我试图创建具有相同的密钥的json数据(截图)一个对象,并有我想要显示的值。之后,我不知道如何管理这个。甚至更少显示我的对象,如果键“可见”==“真”。

现在,我只能成功显示我的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'); 
    }; 



}]) 
+0

'NG秀=“可见”'https://docs.angularjs.org/api/ng/directive/ngShow –

回答

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> 
+0

如果我想显示类似“嗨”时,当钥匙==提.rcs和“good evening”当key ==提到.bank时,我该如何管理它? – xenurs

+0

如果你只有这两种情况,那么一系列的ng-if语句会起作用,但我会这样做的方式是在每个部分的json中添加一个消息属性。那么你甚至不需要钥匙,价值。 如果您无法修改传入的json,则可以在控制器中为其运行for循环,以便动态地将消息属性添加到每个部分。这有道理吗?还是你需要一个例子? – kugyousha

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变量作为默认,当你打电话给你的对象,那个时候让真正
中,然后使用它ng-if为真实的情况。