2013-06-19 3 views
0

Я могу сделать это (заголовок) на моих контроллерах, и мне было интересно, могу ли я это сделать и в моих директивах.Назначьте значение фильтра переменной в директиве

Позволяет сказать, что я впрыснуть фильтр моей директивы, как это ...

app.directive('ngDirective', 
    ['$compile','$filter', 
    function ($compile, $filter) { 
     'use strict'; 

И внутри функции связи у меня есть следующее.

var filter = $filter('i18n'); 
var requiredMessage = filter('is_required'); 

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

EDIT: Вот plunker с предварительным просмотром моего кода http://plnkr.co/edit/u1L9SHdAvZnvEqwVBeJg

Любые мысли о том, как решить эту проблему?

+0

могли бы вы предоставить plunker вашего кода? Это кажется довольно простым, но я понятия не имею, как вы пытаетесь с ним справиться (это вся настройка кода)? Я подозреваю, что вы не определяете сферу своей директивы правильно ... – callmekatootie

+0

yo @callmekatootie это почти тот же случай, что и эта ссылка, но внутри директивы, а не контроллера. http://stackoverflow.com/questions/16775750/angularjs-apply-filter-in-controller – marceloduende

+0

@callmekatootie, который может дать вам лучшее представление о том, о чем я говорил. http://plnkr.co/edit/u1L9SHdAvZnvEqwVBeJg – marceloduende

ответ

0

Если вы хотите использовать определенный фильтр, вам придется загрузить его.

Вот пример определения фильтра и загрузки в ваш директивный модуль.

http://plnkr.co/edit/61X6i32By8PA6W7BLh52?p=preview

angular.module('myfilters', []). 
filter('i18n', function() { 
    return function() { return 'my message'; }; 
}); 

angular.module('myapp', ['myfilters']). 
    directive('ngTest', function($compile, $filter) { 
    'use strict'; 
+0

Фильтр загружался уже, но без буено. Любая другая идея? – marceloduende

+0

Возможно, вы захотите включить фильтр i18n в свой плункер. Он не загружен там, поэтому нет ничего удивительного в том, почему он равен нулю. – Tosh

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