2014-10-08 40 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的屬性。

希望這會有所幫助!