Показать сообщение отдельно
  #2 (permalink)  
Старый 20.01.2014, 10:58
Аватар для dolpheen
Интересующийся
Отправить личное сообщение для dolpheen Посмотреть профиль Найти все сообщения от dolpheen
 
Регистрация: 04.01.2014
Сообщений: 14

Разработчики ангуляра рекомендуют манипулировать DOMом из директив, прилагаю два варианта (второй предпочтительней, возможность использовать директивные templates, scope, compile и т.д.)

Вариант 1. Создание элемента в контроллере
<tr ng-controller="theController" ng-repeat="i in data">
			<td>{{i.title}}</td>
			<td></td>
		</tr>

controller('theController', ['$scope', '$element', function ($scope, $element) {
        console.dir($element);
        $scope.$watch('i.type', function(){
            $element.children().eq(1).html('<'+$scope.i.type+'></'+$scope.i.type+'>');
        });
    }])


Вариант 2. Создание элемента в директиве
<tr ng-repeat="i in data">
			<td>{{i.title}}</td>
			<td my-type></td>
		</tr>

directive('myType', function () {
        return {
            link: function (scope, elem, attr){
                elem.html('<'+scope.i.type+'></'+scope.i.type+'>')
            }
        }
    });


http://plnkr.co/edit/F56dqTONB4kgsImdIXhO?p=preview
Ответить с цитированием