проверить параметр в объекте in-model

0

У меня есть список с некоторыми людьми, и если у этого человека есть поле комментариев - вы можете редактировать эту информацию в input:text. Поэтому я показываю это поле, когда у человека есть это поле. Но у меня проблема, когда я удаляю предыдущий комментарий - ввод скрывается. Это couse person.comment = "", и я думаю, что это мены, как ложные.

<input person="text" ng-show='person.comment' ng-model='person.comment'>

я пытаюсь сделать следующее:

ng-show='person.comment || person.comment === ""'

но, возможно, существует другой способ? как comment in person? Мой plnkr.

  • 0
    похоже, что ваша попытка действительно решает проблему, если я правильно понимаю. Если я добавлю ng-show='person.comment || person.comment === ""' поле ввода не исчезает при удалении текста в поле ввода.
  • 0
    @Matthias да, но иногда (не часто) person.comment - не определено, поэтому мне нужно сделать ng-show='person.comment || person.comment === ""' || person.comment === undefined и это выглядит ужасно, поэтому, возможно, у нас есть лучший способ проверить. как мы делаем, if if(comment in person) например,
Показать ещё 7 комментариев
Теги:

2 ответа

1
Лучший ответ

Чтобы проверить, есть ли у объекта ключ в javascript, для вас вы можете написать:

ng-show="person.hasOwnProperty('comment')"

from Как проверить, имеет ли объект ключ в JavaScript?

0

Добавить Simply angular.forEach в массив $ scope.stuff Как: -

Js

var app = angular.module('App', []);

app.controller('Ctrl', function($scope) {
    $scope.hideVariable = true;
    $scope.stuff = [
      {
       name: 'Jack',
       age : 22,
       comment : 'good boy'
      },
      {
       name: 'Bob',
       age : 23,
       comment : 'likes beer'
      },
      {
       name: 'Alisa',
       age : 21,
       comment : 'pretty girl'
      },
      {
       name: 'Jane',
       age : 25,
       comment : "she fine"
      },
      {
       name: 'Mike',
       age : 19,
       comment : 'playing guitar'
      }
    ]
   angular.forEach('$scope.stuff', function (data) {
      if(data.comment === null || data.comment === 'undefined' ) {
        $scope.hideVariable = false;
      }
   })
})

HTML

<input person="text"ng-show="hideVariable" ng-model='person.comment'>

Пройдите через этот плункер

  • 0
    Нет, без нг-шоу люди без comment тоже будут иметь вход
  • 0
    Хорошо, тогда просто добавьте цикл for в Js и передайте одну логическую переменную, чтобы отключить включение вашего поля, подождите, я обновлю ответ
Показать ещё 1 комментарий

Ещё вопросы

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