нг-если для сравнения динамических значений JSON

0

Я новичок в AngularJs. У меня есть два объекта JSON, один из них - "продукты", а другой - "пользователи". У меня есть два ng-repeat, для отображения продукта и внутри, чтобы получить имя пользователя продукта. У меня есть другой цикл. Во внутреннем цикле мне нужно проверить userId из продукта JSON и сравнить его с userId в объекте User, и если совпадения отображают его в теге P. Мой код выглядит следующим образом:

<div class="col-md-4" ng-repeat="(key,value) in products" style="padding-top: 1.4%; padding-bottom: 1.4%;" >
<img style="height:300px;width:350px" ng-src="{{products[key].image}}"></img>
<div ng-repeat="(userkey,value) in User">
<p ng-if="User[userkey].userId == products[key].user">{{{User[userkey].name}}</p> 
</div>
</div>

Я пробовал так, но он отображает всех пользователей в теге p. Может кто-нибудь помочь с этим

  • 0
    Можете ли вы предоставить данные в products и User .
  • 0
    Мой пример данных выглядит следующим образом: product data {'productId': '1', 'name': 'abc', 'image': 'temp.jpg', 'user': 'user1', 'description': 'This мой пример описания продукта '} пользовательские данные {' userId ':' user1 ',' name ':' test ',' address ':' my address '}
Теги:

3 ответа

0
Лучший ответ
<div class="col-md-4" ng-repeat="product in products" style="padding-top: 1.4%; padding-bottom: 1.4%;" >
<img style="height:300px;width:350px" ng-src="{{product.image}}"></img>
<div ng-repeat="(oneUser in User">
<p ng-show="oneUser.userId == product.user">{{{oneUser.name}}</p> 
</div>
</div>
  • 0
    Тем не менее он показывает все имена пользователей
  • 0
    вы можете напечатать {{oneUser.userId}} и {{product.user}} и сказать мне, что они показывают в пользовательском интерфейсе?
Показать ещё 6 комментариев
1

Вы можете сделать это с помощью фильтра:

 oneUser in User | filter: {userId:product.user}:true

играть на скрипке

РЕДАКТИРОВАТЬ

То, как вы должны это делать, это фильтры, вы можете использовать ng-show/ng-hide, но вы по-прежнему показываете этот элемент как комментарий, а с фильтром - нет. Поэтому используйте это для больших данных.

  • 0
    Почему это не работает для меня, если я использую product.name. Это работает только, если я использую продукты [product] .name. Я делаю что-то не так?
  • 0
    Может быть, вы не повторяете то же самое, что и продукты ... в скрипте вы видите, что это ng-repeat = "product in products" ... в то время как в вашем вопросе у вас есть это (ключ, значение) в продуктах
Показать ещё 1 комментарий
0

Это то, что сработало для меня -

<div ng-repeat="p in products">
    <div ng-repeat="u in users">
        <p ng-show="u.userId == p.user">
            {{u.name}}
        </p> 
    </div>
</div>

Fiddle - http://jsfiddle.net/halirgb/Lvc0u55v/

  • 0
    Это работает, спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню