2014-09-04 99 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,感覺有點像黑客攻擊,但它起作用。