2015-04-09 3 views
0

Я пытаюсь использовать ng-view внутри настраиваемой директивы, но он не работает, и он также не дает мне никакой ошибки в консоли.AngularJS: ngView внутри настраиваемой директивы

Это моя директива:

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .directive('header', Header); 

    Header.$inject = ['USER_AGENT']; 

    function Header(USER_AGENT) { 
     return { 
      restrict: 'A', 
      templateUrl: 'app/shared/header/header.html', 
      controller: controller 
     } 

     function controller($scope) { 
      $scope.isMobile = USER_AGENT.isMobile; 
     } 
    } 

})(); 

А внутри header.html файла У меня есть вызов ng-view так же, как я звала его снаружи (когда он работал). Возможно ли установить гнездо ngView внутри пользовательской директивы?

+1

Не уверен, что это может быть выработано или нет, но, ИМХО, это плохая идея. – ABOS

+0

Мне интересно, ваша директива должна применяться к элементу, а не ограничивать: «E» и использование

? Но я согласен с последним комментарием, как правило, вы хотите ng-view в файле index.html ... не в директиве –

+0

Да, я это знаю, но в этом случае мне это действительно нужно. И если я сделаю

, вероятно, у меня будут некоторые ограничения IE. –

ответ

2

AngularJS не поддерживает несколько ng-view s в одном приложении. Если вы хотите - вы должны использовать другой механизм маршрутизации, например Угловая UI-х ui-router

+0

Пока вы понимаете, как работает 'ngRoute', вы можете заставить его работать с несколькими видами: http://liamkaufman.com/blog/2013/11/11/understanding-angularjs -directives-часть2-нг-просмотр / –

0

Даже если вы могли бы использовать его не стоит, потому что это не правильный подход к угловому directive следует рассматривать как веб-компонента в как input, select и т.д.

Просто помните, что ваш header.html просто вид и может использоваться почти ничего, это просто вид

.directive('myDirective', function($timeout) { 
    return { 
    restrict: 'A', 
    templateUrl: 'app/shared/header/header.html', 
    controller: controller 
}); 

Или (с помощью ui-router)

$stateProvider 
    .state('home', { 
    url: '/?accountkey', 
    templateUrl: 'app/shared/header/header.html', 
    controller: controller 
}); 
Смежные вопросы