2014-02-20 4 views
1

У меня есть приложение AngularJS и используйте ui-router для маршрутизации. Одна из моих страниц имеет два похожих раздела с тем же шаблоном и логикой (поэтому я надеюсь, что они смогут использовать один и тот же контроллер). Единственная разница между ними - это, например, type. Вот упрощенная скрипка страницы: http://jsfiddle.net/e_gluhotorenko/XeX59/7/.AngularJS ui-router views with custom data

Так можно ли предоставить пользовательские разные данные в области просмотра? Что-то вроде пользовательских данных в штатах, но и для просмотров:

views: { 
    'section1' : { 
     templateUrl: 'section.html', 
     controller : 'ctrl', 
     data : { type: 'type1'} 
    }, 
    'section2' : { 
     templateUrl: 'section.html', 
     controller : 'ctrl', 
     data : { type: 'type2'} 
    } 
} 

Или с ui-view директива, как в ng-inclide «s onload:

<div ui-view="section1" onload="type = 'type1'"></div> 
<div ui-view="section2" onload="type = 'type2'"></div> 

ответ

2

Только что узнал, что на самом деле имеет ui-viewonload атрибут, он отсутствует в документации, но в API ref. Поэтому мой пример из вопроса работает! fiddle

1

Пробовали ли вы ng-init как в <div ui-view="section1" ng-init="type = 'type1'"></div>? Это должно работать, я бы связать угловые документы для ng-init, но сайт, кажется вниз прямо сейчас

+0

Я думаю, что 'ng-init' следует вызывать в родительской области, поэтому мы просто дважды инициализируем' type' из родительской области. Проверьте это http://jsfiddle.net/GXLZm/1/ –

+0

@ e.gluhotorenko. Ваш jsfiddle, кажется, делает то, что я предложил, чтобы вызвать 'ng-init' на этих двух div. Я просто написал только один из двух разделов. Jsfiddle всегда лучше, хотя, хорошо! – BramSlob

+0

, но он не работает, как вы ожидали, да? –