본문 바로가기

목록이 없습니다.

[Angular JS] 동적 요소 바인딩 (angularjs dynamic element binding)

Framework/AngularJS

    Angular JSAngular JS


    Angular JS 동적 요소 바인딩 (angularjs dynamic element binding)

    프론트엔드 프레임워크 중 하나인 Angular JS(앵귤러 제이에스)를 사용하다 보면 가끔 jQuery(제이쿼리)에서 사용하듯이 DOM을 동적으로 붙여주고 싶을 때가 있다.


    이 때 단순히 angularjs 안의 내장되어있는 jqlite를 통해서 clone() 함수로 html을 복사한 후에 append() 함수나 after()함수로 붙여준다면 그 안에 바인딩 되어 있는 이벤트들은 동작하지 않을 것이다.


    그럴 때 다음과 같이 $compile을 활용하면 된다.


    var prod_el = angular.element('#set_product_row');
    var clone_el = prod_el.clone();    // 복사된 html
            
    // 동적으로 append한 html요소에 ng-click 등 함수 바인딩을 위해 $compile 수행후에 append
    prod_el.after($compile(clone_el)($scope));


    이렇게 하면 clone하여 붙인 영역도 이벤트 바인딩이 되어 정상적인 동작이 된다.






    HTML 요소 태그 적용하여 바인딩


    app.filter('trustAsHtml', ['$sce', function($sce) {
        return function(text) {
            return $sce.trustAsHtml(text);
        }
    }]);