2013-08-05 3 views
4
<button command="saveCmd">{{saveText}}</button> 

В распоряжение команды нет шаблона - это поведенческая директива. Но мне нужно использовать transclude: true для отображения {{saveText}}.Как использовать transclude без шаблона в Угловой директиве?

Я мог бы создать фиктивный шаблон, например template: "<div ng-transclude></div>", но я не уверен, что кнопка div внутри действительна для всех браузеров.

Также я мог бы использовать атрибут для определения названия, например <button title="saveText"... Но мой вопрос о ng-transclude без шаблона. Является ли это возможным?

Заранее спасибо.

Update:

Новый 'изолят' сфера scope: {} внутри директивы является причиной, почему {{}} saveText не сохраняется по умолчанию.

+1

По умолчанию, если вы не используете шаблон, содержимое левый как есть. Что вы делаете в своей директиве? [Пример директивы, не изменяющей контент.] (Http://jsfiddle.net/OverZealous/Ns284/1/) – OverZealous

+0

Если вы добавите область видимости: {} в свой JSFIDDLE, {{bar}} будет потерян. –

ответ

1

Вы можете сделать директиву без контроллера и без изолированного объема. В функции связи я иногда делаю такие вещи:

.directive('toggle', function ($parse) { 
    return { 
    /* We can't use an isolated scope in this directive, because it happens 
    * all the time that you need to put a toggle on an element that uses the scope: 
    * <span toggle="boolVar" ng-class="{active: boolVar}">{{someVar}}</span> 
    * 
    * Transclusion can be an option to make the {{someVar}} work, 
    * but the ng-class will use the isolated scope for this directive 
    * (if we'd use the isolated scope, which we don't) 
    */ 
    link: function (scope, $element, attrs) { 
     // use a $parse getter/setter, because toggle can contain a 
     // complicated expression 
     var getter = $parse(attrs.toggle); 
     var setter = getter.assign; 

     $element.on('click', function() { 
     scope.$apply(function() { 
      setter(scope, !getter(scope)); 
     }); 
     }); 
    } 
    }; 
}); 

Может быть, это $ синтаксический анализ трюк помогает вашей команде настроить ...

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