ng hide,如何通过url扩展条件有条件地显示角度

时间:2014-10-08 17:30:28

标签: javascript angularjs ng-hide

我正在测试和应用,并希望做一些非常简单的事情。我想隐藏一个div,只有在扩展名添加到网址时才会在浏览器中显示。例如:

<div ng-hide="true" class="cookie-banner">
   Warning you about cookies
</div>

我会通过添加 - &gt;看到隐藏的div ?秀= cookie的旗帜 到网址,所以本地网站如:../ webapp /#/ subscribed不会显示隐藏的div但是../webapp/#/subscribed?show=cookie-banner这会。我不确定我在做什么才能做到这一点。请帮忙!

2 个答案:

答案 0 :(得分:1)

您可以在控制器或您创建的自定义指令中使用angular $location service,您希望根据$ location设置逻辑。$$ absUrl值。

//in your controller
app.controller('SomeController', ['$scope', '$location', 
  function ($scope, $location) { 

    $scope.hideBasedOnUrl =  $location.$$absUrl.indexOf('show=cookie-banner') !== -1;                 

  }]);

//html
<div ng-hide="hideBasedOnUrl " class="cookie-banner">
  Warning you about cookies
</div>


//in a directive
app.directive("hideBasedOnUrl", function ($location) {
return {
    restrict: "E",
    link: function (scope, element, attrs, ngModelCtrl) {
        if ($location.$$absUrl.indexOf('show=cookie-banner') !== -1){
          element.style.display = "none";
        }   
    }
}
});

//html
<div hideBasedOnUrl class="cookie-banner">
  Warning you about cookies
</div>

使用该指令,您可以执行更高级的操作,例如将html中的url值作为属性传递给您,以便隐藏div。

希望这有帮助!

答案 1 :(得分:0)

我强烈建议不要使用您的网址作为在Angular中传递参数的方法。您正在寻找的功能应包含在控制器中。