Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   ng-include или ng-transclude для выборочного показа контента (https://javascript.ru/forum/angular/38478-ng-include-ili-ng-transclude-dlya-vyborochnogo-pokaza-kontenta.html)

Shitbox2 03.06.2013 18:32

ng-include или ng-transclude для выборочного показа контента
 
Простая задачка: показать определенный контент администратору, а от остальных скрыть или показать им что-нибудь другое.

Заменить весь вид в ng-view не катит, потому что админка это не отдельная сущность, а пара кнопочек и меню в стандартном интерфейсе пользователя. Более того, каждый независимый компонент должен строиться так, чтобы иметь свою администраторскую часть.

Можно использовать ng-show, но для объемных вещей не подойдет, т.к. не хочется загружать всем пользователям админские примочки.

Существуют ng-include и ng-transclude, но пока не соображу, что из них лучше и как правильно пользоваться. У кого-нибудь есть мысли по этому поводу?

just-boris 03.06.2013 21:09

Ну если это всего пара кнопок, но лучше их скрыть через ng-show или ng-if, много ресурсов они не заберут.
Если это что-то более серьезное, то наверно стоит использовать ng-include, обернутый в ng-if:
<div ng-if="showAdminPanel">
   <div ng-include="adminPanel.tpl.html"></div>
</div>

DjDiablo 10.06.2013 08:37

используй геттер в ng-include

в контролёре
function pageCtrl($scope) {
	var include="test2.html"

	$scope.getInclude=function()
	{
		return include;
		//alert(include);
	}

	$scope.setInclude=function(url)
	{
		include=url;
	}
}


В шаблоне
<div  ng-include="getInclude()"></div>


теперь если вызвать $scope.setInclude("test3.html") содержимое ng-include изменится на test3.html

Идея в голову пришла, правда не знаю проканает ли такой паттерн, но вроде должен.
здесь отображаемая страница зависит от переменной num
$scope.getInclude=function(num){
      return "page"+num+".html";
} 
//...
<div  ng-include="getInclude(numpage)"></div>


Часовой пояс GMT +3, время: 14:27.