2016-04-19 26 views
1

我有两个按钮。我想使用ng-if来确保只有当您在应用程序中的某个页面时才能看到其中一个按钮。获取ng-if的当前状态ui-if

我希望其他按钮在应用程序中随处可见,除非您在某个特定页面。

所以我认为我可以使用ng-if。

BUTTON 1

<md-button ng-if="$state.current.path === example" class="md-icon- button" aria-label="More" ui-sref="health"> 
      <md-icon md-svg-icon="images/back.svg"></md-icon> 
      </md-button> 

按钮2

 <md-button ng-if="!($state.current.path === example)"class="md-icon-button" aria-label="More" ng-click="toggleHamburger()"> 
      <md-icon md-svg-icon="images/menu.svg"></md-icon> 
     </md-button> 

在我的控制器中我使用的是常规的UI路由器语法(如下面)

.state('example', { 
     url: "/example", 
     templateUrl: "components/examples/example.html" 
    }) 

尽管如此,这并不工作:我如何访问UI路由器的当前状态并使用它来评估我的按钮是否应该可见?

+0

您在控制台中收到什么错误消息? – Austin

+0

什么和哪里不工作? – tsuz

+0

无,按钮都可见。我不认为我成功地获得了当前的路线。我不确定语法 – andrea

回答

2

您必须在您的范围内公开状态。

控制器:

// ... stuff 
$scope.currentPath = $state.current.path 
// ... more stuff 

查看:

<md-button ng-if="currentPath === 'example'" class="md-icon- button" aria-label="More" ui-sref="health"> 
    <md-icon md-svg-icon="images/back.svg"></md-icon> 
</md-button> 
+0

如果这是正确的,那么它可能只是$ state.current.path而不是$ state.currentPath中的ng-if – Austin

+0

'$ state'是否自动在作用域中公开自己?如果确实如此,但如果没有,则可以将其命名为访问它,但是当您选择时选择它 – casraf

2

您可以使用$location.path()这里是这样的。

ng-if="$location.path() === example" 
0

简单多是使用UI-S REF-主动指令,添加一个类,显示的元素,它

<ui-sref-active="show-element" class="md-icon-button ng-hide" 

然后在你的CSS:

.show-element { 
    display: block/inline-block; 
} 
+0

我该怎么做? – andrea

+0

编辑了答案 –