1

我正在测试和应用程序,并且想做一些非常简单的事情。我想隐藏一个 div 并仅在将扩展名添加到 url 时在浏览器中显示它。例如:

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

我会通过在 url 中添加 --> ?show=cookie-banner 来查看隐藏的 div,因此像 ../webapp/#/subscribed 这样的本地站点不会显示隐藏的 div,而是 ../webapp/#/subscribed? show=cookie-banner 这会。我不确定我在做什么来完成这项工作。请帮忙!

4

2 回答 2

1

您可以在控制器或您创建的自定义指令中使用角度 $location 服务,您更喜欢根据 $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>

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

希望这可以帮助!

于 2014-10-08T18:26:23.727 回答
0

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

于 2014-10-08T17:35:43.657 回答