Ng-如果仅在刷新页面时起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ng-如果仅在刷新页面时起作用相关的知识,希望对你有一定的参考价值。

我有一个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() === "/";

       ...
});

希望有人可以解释我,我犯了哪个错误。

答案

您正在使用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>

以上是关于Ng-如果仅在刷新页面时起作用的主要内容,如果未能解决你的问题,请参考以下文章

javascript插件仅在鼠标进入视口时起作用

jquery on click 功能仅在双击时起作用

如何使功能仅在第一个主体加载时起作用?

scrollTop 按钮仅在第一次单击时起作用

Jquery .remove() 仅在第二次点击时起作用

如何在 Safari 上使用 JS 检测用户关闭页面