Обработка выражений в директивах AngularJS

Последнее обновление: 1.11.2015

AngularJS предоставляет ряд сервисов, которые работают с выражениями AngularJS, в том числе и выражениями привязки. Разберем один из них - сервис $compile. Он преобразует HTML-код, содержащий выражения привязки и директивы, в функцию, вызываемую для генерации контента.

Чтобы применить сервис $compile, возьмем директиву answerList из прошлой темы и изменим ее следующим образом:

questApp.directive("answerList", function($compile) {
	return function (scope, element, attrs) {
		var content = "<div class='answers'>" +
        "<div ng-repeat='answer in question.answers' class='answer'>" +
            "<div class='vote'>" +
            "<a class='vote-up' ng-click='voteUp(answer)'></a>" +
            "<span class='rate'>{{answer.rate}}</span>" +
            "<a class='vote-down' ng-click='voteDown(answer)'></a>" +
			"</div>" +
        "<b>{{answer.text | formatText}}</b>" +
        "<p>{{answer.author}}</p>" +
        "<p><i>{{answer.date}}</i></p>" +
    "</div></div>";
		var answersElem = angular.element(content);
		var compileFn = $compile(answersElem);
		compileFn(scope);
		element.append(answersElem);
	}
});

Сервис $compile представляет функцию, генерирующую контент из фрагментов html. Чтобы наполнить контент данными из контроллера, в функцию передается параметр scope: compileFn(scope);

Завершает работу метод element.append(answersElem), который добавляет сгенерированный контент в структру DOM веб-страницы.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850