Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2013, 13:51
Аспирант
Отправить личное сообщение для virus-07 Посмотреть профиль Найти все сообщения от virus-07
 
Регистрация: 16.12.2010
Сообщений: 41

Использование динамичных данных в директиве
Добрый день. У меня есть блок, куда встаёт текст:
<div tag-style>{{tags}}</div>


Я хочу написать директиву, которая обработает текст и вернёт мне тэги.

myApp.directive('tagStyle',function(){
    return{
        link: function(scope, element, attrs, controller){
            element.html(devide(element.text().trim());
        }
    };

    function devide(text){
        ...
        return smth;
    }

    function trim(){
        return this.replace(/^\s+|\s+$/g, '');
    }
});


Директива отрабатывает, если данные подставлены статично. А так выводит результат обработки для текста {{tags}}
Я так понимаю, мне нужно использовать $compile? Как его использовать после передачи в директиву?

Последний раз редактировалось virus-07, 03.10.2013 в 14:36.
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2013, 16:24
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

после вставки HTML выполни
$compile(element.contents())(scope);

Незабудь $compile подключить.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2013, 16:37
Аспирант
Отправить личное сообщение для virus-07 Посмотреть профиль Найти все сообщения от virus-07
 
Регистрация: 16.12.2010
Сообщений: 41

Добавлял эту конструкцию до Спасибо.
upd: не работает нормально, в функцию devide() падает ерунда.

Последний раз редактировалось virus-07, 03.10.2013 в 16:52.
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2013, 17:16
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Код покажи и что попадает ?
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2013, 17:20
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

И еще замечу что вот эта функция
function trim(){
        return this.replace(/^\s+|\s+$/g, '');
}

здесь ( element.text().trim() ) не работает
Так как срабатывает trim для строки а твоя функция не при делах
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #6 (permalink)  
Старый 03.10.2013, 17:43
Аспирант
Отправить личное сообщение для virus-07 Посмотреть профиль Найти все сообщения от virus-07
 
Регистрация: 16.12.2010
Сообщений: 41

Хорошо, ни при делах да и фиг с ней сейчас. Я силюсь понять логику compile и директив (смысл понимаю, реализацию не очень).
В функцию devide() падает {{tags}}, если его алертить.

Последний раз редактировалось virus-07, 03.10.2013 в 17:46.
Ответить с цитированием
  #7 (permalink)  
Старый 03.10.2013, 20:34
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от virus-07
Директива отрабатывает, если данные подставлены статично. А так выводит результат обработки для текста {{tags}}
Я так понимаю, мне нужно использовать $compile? Как его использовать после передачи в директиву?
на первый взгляд понимаете не верно. Передавайте параметры в директиву
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2013, 21:47
Аспирант
Отправить личное сообщение для virus-07 Посмотреть профиль Найти все сообщения от virus-07
 
Регистрация: 16.12.2010
Сообщений: 41

Подскажите, пожалуйста, как их передать?
Я брал из element.text() и думал это верный способ — всё же в верстке остаётся только имя директивы..
Ответить с цитированием
  #9 (permalink)  
Старый 03.10.2013, 23:34
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

песочницу мне тоже за вас рисовать?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #10 (permalink)  
Старый 04.10.2013, 11:59
Аспирант
Отправить личное сообщение для virus-07 Посмотреть профиль Найти все сообщения от virus-07
 
Регистрация: 16.12.2010
Сообщений: 41

Сообщение от nerv_ Посмотреть сообщение
песочницу мне тоже за вас рисовать?
http://jsfiddle.net/3HT2F/4/

Прошу, угощайтесь пожалуйста
Как здесь $compile использовать? Если подставлять текст на прямую прям в div — работает нормально

Последний раз редактировалось virus-07, 04.10.2013 в 13:22.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
Получение данных и их использование مراد Общие вопросы Javascript 10 31.01.2013 14:34
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Изменение окраски строк таблицы, исходя из данных? Space-06 Events/DOM/Window 4 14.02.2012 21:32
hta/jscript обновление данных MySQL через ODBC драйвер Space-06 Events/DOM/Window 0 26.12.2011 22:19