Сообщение не будет отображаться во второй раз после закрытия - PullRequest
0 голосов
/ 22 апреля 2019

Пользователь может щелкнуть значок справки, чтобы отобразить сообщение справки.Он закроется, если пользователь нажмет на значок закрытия в сообщении.Это может повторяться неограниченное количество времени.

Это работает, если и значок справки, и сообщение со значком закрытия находятся внутри ng-контроллера.

Однако, если значок справкиснаружи, и сообщение находится внутри него (см. ниже), тогда я могу отобразить и закрыть сообщение справки, но оно не будет работать, если я попытаюсь отобразить его во второй раз.

Чего мне не хватает?

<div ui-content-for="title">
  <span>Page Title</span>
  <span>
    <i ng-click="isHelpVisible = true;" class="fa fa-question-circle">
    </i>
  </span>
</div>

<div ng-controller="InventoryController as inventory">
  <div class="scrollable">
    <div ng-show="isHelpVisible" class="alert alert-info alert-dismissible">
        <a class="close" ng-click="isHelpVisible = false;"
           aria-label="close" data-dismiss="alert">&times;</a>
        Help message is here.
    </div>
  </div>
</div>

1 Ответ

1 голос
/ 23 апреля 2019

Это проблема сокрытия данных, вызванная тем, что директива ng-controller создает дочернюю область.

Вместо того, чтобы устанавливать свойство области напрямую, установите свойство объекта в родительской области.

<div ui-content-for="title">
  <span>Page Title</span>
  <span><i ng-click="help={isHelpVisible: true}" class="fa fa-question-circle"></i></span>
</div>

<div ng-controller="InventoryController as inventory">
  <div class="scrollable">
    <div ng-show="help.isHelpVisible" class="alert alert-info alert-dismissible">
        <a class="close" ng-click="help.isHelpVisible=false;"
           aria-label="close" data-dismiss="alert">&times;</a>
        Help message is here.
    </div>
  </div>
</div>

Обычно наследование области происходит просто ... до тех пор, пока вам не потребуется двухстороннее связывание данных .Если вы попытаетесь выполнить привязку к примитиву (например, число, строка, логическое значение) в родительской области изнутри дочерней области.Это не работает так, как ожидает большинство людей.Дочерняя область действия получает свое собственное свойство, которое скрывает / скрывает родительское свойство с тем же именем.

Ваш обходной путь - определить объекты в родительском объекте для вашей модели, а затем обратиться к свойству этого объекта в дочернем объекте.

Для получения дополнительной информации см.

...