2015-06-08 3 views
4

У меня есть директива, которая имеет функцию для шаблонаУгловая область видимости доступа из шаблонной функции директивы

restrict: 'E', // 'A' is the default, so you could remove this line 
    scope: { 
     field : '@field', 

    }, 
    template: function(element, attrs) { 
     //some code here 
    }, 
    link: function (scope, element, attrs) { 

Можно ли получить доступ к сферам дИРЕКТИВЫ от функции шаблона? Я пытаюсь сделать что-то вроде

if (scope.columnType == 'test'){ .. } 

, потому что я хочу сделать другой шаблон на основе других значений

+3

Нет, это невозможно; самое раннее место, где доступна область действия директивы, является функцией предварительной привязки или контроллером. –

+0

Хорошо. Спасибо :) – LucianRadu

+0

что вы собираетесь делать в этом шаблоне .. мы могли бы перейти на другой подход –

ответ

6

Вы можете получить доступ к директиве $ объема от функции Link, $ компилировать любой HTML и добавить его директиве элемента (что на самом деле, могли бы быть инициализированы пустым):

angular.module("example") 
.directive('example', function($compile) { 
    return { 
     restrict: 'E', 
     link: function(scope, element, attrs){ 
      scope.nums = [1, 2, 3]; 
      var html = '<div ng-model="scope"><p ng-repeat="n in nums">{{ n }}</p></div>'; 
      var el = $compile(html)(scope); 
      element.append(el); 
     } 
    } 
}); 

Обратите внимание, что я должен был явно указать модель данных для тега (нг-модель = «сфера»). Я не мог заставить его работать иначе.

+0

Спасибо, Это было полезно. – gtiwari333

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