Ng-If работает только при обновлении страницы - PullRequest
0 голосов
/ 05 апреля 2019

У меня проблема с ng-if, я довольно плохо знаком с angularjs. Я хочу показать / скрыть панель поиска только на определенных видах, но она работает только после обновления страницы. Но это должно работать, когда вид изменился.

HTML:

<div id="searchbarTop" ng-controller="searchbarController">
  <form class="col-md-12 py-1" ng-if="!showSearchbarTop">
    <div class="input-group">
      <input type="text" class="form-control typeahead" id="query" 
        placeholder="Search for folders or workflows..." data- 
        provide="typeahead" autocomplete="off" ng-wflist="workflowList" wf-search/>
    </div>
  </form>
</div>

Контроллер:

ProjectX.controller("searchbarController", function($scope,$http,$location) {
    $scope.$root.showSearchbarTop = $location.path() === "/";

       ...
});

Надеюсь, кто-нибудь сможет мне объяснить, какую ошибку я совершил.

1 Ответ

0 голосов
/ 05 апреля 2019

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

См. Следующий код

var ProjectX = angular.module('', []);
ProjectX.controller("searchbarController", function($scope, $http, $location) {
  $scope.$root.showSearchbarTop = function() {
    return $location.path() === "/";
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div id="searchbarTop" ng-controller="searchbarController">
  <form class="col-md-12 py-1" ng-if="!showSearchbarTop()">
    <div class="input-group">
      <input type="text" class="form-control typeahead" id="query" placeholder="Search for folders or workflows..." data- provide="typeahead" autocomplete="off" ng-wflist="workflowList" wf-search/>
    </div>
  </form>
</div>
...