2014-09-04 69 views
0

我有一个视图中可见像Angular.js ui路由器。元素只用给定的孩子

project.detail

和儿童状态的抽象的视图状态像

project.detail.settings

project.detail.Summary

现在在抽象project.detail视图中,我有一个按钮应该只显示在视图projects.detail.summary时显示。

我可以想象,每个子视图可能会触发一个angular.js服务,从而导致改变抽象视图的模型。但是没有更简单的方法吗?

喜欢的东西NG秀=“childView ==‘总结’

我viewstates看起来是这样的:

var projectsDetail = { 
     name: 'projects.detail', 
     templateUrl: viewPath + '/projects/projects.Detail.html', 
     controller: 'projectsDetailCtrl', 
     abstract:true, 
     url: '/:id', 
    }; 

    var projectsDetailChangesets = { 
     name: 'projects.detail.changesets', 
     templateUrl: viewPath + '/projects/projects.detail.changesets.html', 
     controller: 'projectsDetailCtrl', 
     parent:projectsDetail, 
     url: '/changesets', 
    }; 

    var projectSummaries= { 
     name: 'projects.detail.Summary', 
     templateUrl: viewPath + '/projects/projects.Summary.html', 
     controller: 'projectsSettingsCtrl', 
     parent: projectsDetail, 
     url: '/settings', 
    }; 

回答

1

您可以在以下两种方法之一做到这一点,您可以与UI拨弄。 -sref活跃的基础上,无论是否是在一个特定的状态下增加了一个类的元素。

http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-sref-active

(请注意,最近发布ui-router改变了ui-sref-active的工作原理并添加了ui-sref-active-eq,这是旧版本)。

或者你可以用普通的ng-ifs来代替$state.includes('projects.detail.Summary')}。在这种情况下,您需要实际为$ scope添加$ state。当我必须这样做时,我在我的控制器中执行:$scope.$state = $state,感觉有点像黑客攻击,但它起作用。