AngularJS로 DOM 조작

사용자 500468

지시문을 사용하여 angularjs로 내 테이블을 조작하려고합니다.

다음과 같이 id = 2 인 첫 번째 td에 새 클래스를 추가하고 싶습니다.

gameApp.directive('mapActivity', function() {
    return {
        link: function(scope, element, attrs) {
            angular.element('.click#1').addClass('dotted');
        }
    };
});

여기서 drictive를 "사용"하려고합니다.

<map-activity>
<table ng-bind-html="safeHtml()">
</table>
</map-activity>

하지만 아무 일도 일어나지 않습니다. 첫 번째 구축 전차는 '점선'클래스를 얻지 못합니다. 내가 뭘 잘못 했어?

내 컨트롤러는 다음과 같습니다.

var gameApp = angular.module("gameApp", ['ngRoute','ngSanitize']);

gameApp.service('link', function() {
    this.user = false;
});
gameApp.filter('unsafe', function($sce) {
    return function(val) {
        return $sce.trustAsHtml(val);
    };
});

gameApp.directive('mapActivity', function() {
    return {
        priority: 1,
        restrict: 'A',
        link: function(scope, element, attrs) {
            angular.element('.click#1').addClass('dotted');
        }
    };
});
function makeTableFrom(str) {
    var k = 1;
    result = "";

    for(var i = 1; i <= 8; i++) {
        result += '<tr>';

        for(var j = 1; j <= 20; j++) {
            if(str[k] == '#') {
                result += '<td id=' + k + '">#</td>';
            }
            else if(str[k] == '&') {
                result += '<td class="click" val="water" id="' + k + '">&</td>';
            }
            else {
                result += '<td class="click" id="' + k + '"><a href="#"></a></td>';
            }

            k++;
        }
        result += '</tr>';
    }
    return result;
}


gameApp.config(function($routeProvider) {
    $routeProvider

    .when('/', {
            templateUrl : 'partials/firstpage.html',
            controller  : 'firstPageCtrl'
    })

    .when('/game', {
            templateUrl : 'partials/game.html',
            controller  : 'gameCtrl'
    });

});

gameApp.controller("firstPageCtrl", function($scope,$http,link,$location) {
    $scope.doLogin = function() {
        $http.post("lib/action.php", {username: $scope.username, password: $scope.password}).success(function(data) {
            if(data) {
                link.user = data;
                console.log(link.user);
                $location.path("/game");
            }
        }).error(function(data) {
            console.log(data);
        });
    };
});


gameApp.controller("gameCtrl", function($scope,$http,link,$location,$sce) {
    //$scope.trr = [1,2,3,4,5,6,7,8];
    //$scope.tdd = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
    $scope.getMonsters = "1";
    var map;

    $http.post("lib/action.php", {monsters: $scope.getMonsters}).success(function(data) {
        map = data;
        console.log(map);
        $scope.result = makeTableFrom(data);
        console.log($scope.result);
    });

    $scope.safeHtml = function() {
        return $sce.trustAsHtml($scope.result);
    };
    if(link.user) {
        /*$scope.message = "fisk";
        console.log(link.user);*/
    } else {
        /*$scope.message = "Ledsen fisk";
        console.log("Är inte satt");*/
    }

});

보시다시피, javascript 함수를 사용하여 HTML로 변수를 할당 한 다음 내보기에서 이것을 사용하여 필터를 통과합니다.

페이지의 소스를보기 위해 Ctrl + u를 눌렀을 때 인쇄되는 td와 tr을 볼 수 없습니다. 이것이 작동하지 않는 이유에 영향을 미칠 수 있습니까?

Vittore

다른 할당 시도 priority할 수 map-activity는 후 처리 할 수 있도록, 지시문ng-bind-html

그리고 @Abhishek Jain과 @Dalorzo가 지적했듯이 지시문은 동일한 DOM 요소에 적용되는 속성이어야합니다.

.directive('mapActivity', function() {
    return {
       priority: 0,   // check what priority ng-bind-html have and set it to be more than that.
       link: function(scope, element, attrs) {
          ...
       }
    }
})

우선 순위

단일 DOM 요소에 정의 된 여러 지시문이있는 경우 지시문이 적용되는 순서를 지정해야하는 경우가 있습니다. 우선 순위는 컴파일 함수가 호출되기 전에 지시문을 정렬하는 데 사용됩니다. 우선 순위는 숫자로 정의됩니다. 숫자 우선 순위가 더 높은 지시문이 먼저 컴파일됩니다. 사전 링크 기능도 우선 순위로 실행되지만 사후 링크 기능은 역순으로 실행됩니다. 우선 순위가 같은 지시문의 순서는 정의되지 않습니다. 기본 우선 순위는 0입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

테이블에서 angularjs dom 조작

분류에서Dev

AngularJS 항목 선택 및 DOM 조작

분류에서Dev

AngularJS-ng -repeat 후 DOM 그룹 조작

분류에서Dev

angularjs 지시문 느린 DOM 조작

분류에서Dev

DOM 조작 AngularJS에서 요소 추가

분류에서Dev

jQuery로 DOM을 조작하는 Coffeescript

분류에서Dev

DOM 조작 및 로컬 저장

분류에서Dev

다양한 유형의 DOM 조작을 처리하는 AngularJS

분류에서Dev

AngularJS-별도의 컨트롤러 및 DOM 조작

분류에서Dev

angularJS에서 DOM 조작하기 : 모범 사례?

분류에서Dev

DOM을 조작하는 AngularJS 지시어와 통신

분류에서Dev

반응 | DOM 조작

분류에서Dev

DOM 조작 질문

분류에서Dev

Angular의 DOM 조작

분류에서Dev

간단한 HTML DOM으로 HTML 데이터 조작

분류에서Dev

JavaScript DOM 테이블 조작

분류에서Dev

간단한 JavaScript DOM 조작

분류에서Dev

유성에서 DOM 조작

분류에서Dev

PHP에서 DOM 조작

분류에서Dev

Polymer에서 프로그래밍 방식으로 로컬 DOM을 조작하는 방법 (예 : dom-repeat)

분류에서Dev

DOM 조작 언어로 Javascript가 아닌 Java를 사용하는 브라우저

분류에서Dev

HTML DOM 조작 : 제목 태그로 태그를 올바르게 교체

분류에서Dev

웹 사이트 최적화-페이지로드 시간 및 DOM 조작

분류에서Dev

DOM 조작을 통해로드 된 Javascript 서브 파일에서 오류 캡처

분류에서Dev

자바 스크립트 DOM 조작으로 덮어 쓴 @media 쿼리

분류에서Dev

DOM 조작이있을 때 iframe 콘텐츠가 다시로드됩니다. Angular

분류에서Dev

Angularjs DOM로드 준비

분류에서Dev

MustacheJS 조건부로 DOM 표시

분류에서Dev

참조로 DOM 요소 변경