2014-09-04 2 views
0

Я вид абстрактное состояние вида какAngular.js ui Router. элемент виден только с данным ребенком

project.detail

и дочерних состояния, как

project.detail.settings

project.detail.Summary

Теперь в абстрактном представлении project.detail у меня есть кнопка, которая должна быть видна только при отображении view projects.detail.summary.

Я мог бы представить, что каждое дочернее представление может вызвать услугу angular.js, которая приводит к изменению модели абстрактного вида. но нет ли более простого способа?

Что-то вроде нг-шоу = "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

Вы можете сделать это одним из двух способов Вы можете играть с ш. -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')}. В этом случае вам нужно будет фактически добавить $ state в область $. Когда я должен это сделать, я делаю: $scope.$state = $state в моем контроллере, который выглядит как хак, но он работает.

Смежные вопросы