2014-10-08 53 views
1

我正在测试和应用程序,并希望做一些非常简单的事情。我想隐藏一个div,并且只在扩展名被添加到url时才在浏览器中显示它。例如:ng隐藏,如何有条件地显示与URL扩展的角度

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

我会看到隐藏的div加入 - >显示= cookie的旗帜 的url,所以本地的网站,如:?../webapp/#/subscribed不会显示隐藏div但../webapp/#/subscribed?show=cookie-banner这会。我不确定我在做什么。请帮助!

回答

0

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

+0

我只需要这个测试。一旦启动,div将保留 – meztli 2014-10-08 17:40:10

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的属性。

希望这会有所帮助!