Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2015, 03:07
Новичок на форуме
Отправить личное сообщение для Wizlight Посмотреть профиль Найти все сообщения от Wizlight
 
Регистрация: 03.11.2015
Сообщений: 5

Директивы при ajax обновлении из вне
Есть некий блок с директивой edit-block
<div edit-block id="t36">
</div>

Сама директива:
angular
    .module('lessonEdit')
    .directive('editBlock', function() {
        return {
            link: function(scope, element, attrs) {
                element.bind('click', function() {
                    alert('test');
                });
            }
        };
    });

Проблема в том, что после аякс обновления блока с данным тегом - ангуляр уже не видит директиву. Как "возобновить" все директивы в обновленном блоке?

Пользуюсь PHP фреймворком Yii, и там есть функция которая обновляет его виджет - список, вот после этого обновления
$.fn.yiiListView.update('blocks_list', {

            });

и перестают работать директивы
Ответить с цитированием
  #2 (permalink)  
Старый 10.11.2015, 06:56
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Предполагаю, что ты еще и шаблоны с php-тегами делаешь
Ангулар не для этого, он так не работает. Все что с бэкэнда можно посылать на фронэнд, когда там используется ангулар - это json.

Если что то начал делать на ангуларе, на ангуларе надо делать все, в том числе и запросы, иначе пришедший хтмл нужно компилять с текущим scope https://docs.angularjs.org/guide/compiler
Ответить с цитированием
  #3 (permalink)  
Старый 10.11.2015, 11:30
Новичок на форуме
Отправить личное сообщение для Wizlight Посмотреть профиль Найти все сообщения от Wizlight
 
Регистрация: 03.11.2015
Сообщений: 5

Проект большой, код переделывается постепенно, виджеты на php трогать не хотел бы. Неужели нет другого выхода?
Читал по форумах - упоминают о $scope.apply(), но что-то не получается, либо не так делаю
Ответить с цитированием
  #4 (permalink)  
Старый 10.11.2015, 13:34
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от Wizlight
$scope.apply()
Это для того, что к примеру, бы ангуляр "принял" данные попавшие в scope "снаружи",т.е. из каких то внешних систем.
А что бы хтмл из внешних систем использовать с директивами ангуляра именно compile
Ответить с цитированием
  #5 (permalink)  
Старый 10.11.2015, 16:20
Новичок на форуме
Отправить личное сообщение для Wizlight Посмотреть профиль Найти все сообщения от Wizlight
 
Регистрация: 03.11.2015
Сообщений: 5

Спасибо за compile. Не знаю на сколько коряво написал, писал в лоб.
После аякс оновления листа:
var template=angular.element('#blockList').html();
angular.element('#blockList').empty();
angular.element('#blockList').append(($compile(template)(scope)));

Последний раз редактировалось Wizlight, 10.11.2015 в 16:22.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое удаление скоупа директивы при удаление dom узла FanAizu Angular.js 0 25.08.2015 21:38
Сброс при обновлении ajax Sn9 Общие вопросы Javascript 0 13.05.2015 14:20
Перестает работать галерея при загрузке через Ajax (Need help) Clodan jQuery 0 20.04.2015 20:18
Ошибки при асинхронных AJAX запросах San4ezy Общие вопросы Javascript 4 27.03.2014 21:48
Закрыть элемент при клике вне его masterm Общие вопросы Javascript 3 31.07.2009 11:27