2014-12-05 2 views
0

나는 내 자신의 태그를 만들고 싶다. 부트 스트랩 타입 어 헤드를 사용하고이 요소에 지시문을 추가하고 선택 작업에서 브로드 캐스트를 수신합니다.지시어에서 DOM 요소를 찾아 제거하는 방법은 무엇입니까?

이전에 추가 된 태그 요소를 제거하는 방법을 찾을 수 없습니다. 나는 두 가지 일을 할 수 없다 : id가 알려져 있더라도 my suctom id를 전달하고이 DO 요소를 찾아 제거한다.

제발 도와 드릴까요?

mainApp.directive("tagsManager", ['$compile', function($compile) { 
    return { 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
      console.log("Tags in directive: " + scope.tags); 
      scope.$on('tags.new', function(event, tag) { 
       console.log("New tag is arrived: " + tag.name); 
       var templ = "<div class=\"btn btn-default\" ng-click=\"tagClick($event)\" id=\"tag.name\">tag.name</div>" 
        .replace(/tag.name/, tag.name).replace(/tag.name/, tag.name); 
       var el = angular.element(templ); 
       el.attr("bind-data", tag); 
//    $scope.items = teamSharedObj.teams; 
       $compile(el)(scope); 
       element.after(el); 
      }); 
      scope.tagClick = function (tag) { 
       console.log("Tag: " + tag); 
       // TODO find a way to get id of this element and rempve it 
      } 
     } 
    } 
}]) 
+0

'$ (this) .attr ("id");'여기서'console.log'는 id를 얻고, 단순히'.remove()'를 사용하여 제거합니다. 일단 당신이 이드를. – rfornal

+0

...'$ (this) .remove()' – rfornal

+0

태그를 표시하는 데'ng-repeat'를 사용하지 않는 것이 어떨까요? 그런 다음 배열 객체에서 태그 객체를 제거하면 각도가 DOM에서 제거됩니다. 당신이 지시어에 가지고있는 코드의 대부분을 필요로하지 않을 것입니다. – charlietfl

답변

1

나는 그것이 쉽게 ng-repeat 및 간단한 코드로 대체 할 수있는 당신이 시작 지시어를 제거합니다. 컨트롤러

:

$scope.tags=[]; 
$scope.typeAheadOnSelect = function(tag){ 
    /* perhaps do an ajax update to server here? */ 
    $scope.tags.push(tag);  
} 
/* example of removing from array */ 
$scope.deleteTag=function(tag){ 
    /*server update by ajax, then */ 
    $scope.tags.splice($scope.tags.indexOf(tag), 1); 
} 

마크 업 : 만들어지고 유일한 변형은 데이터 모델에 추가/내부 DOM 요소를 제거 처리하는 각도 것을

<div ng-repeat="tag in tags" ng-click="deleteTag(tag)" id="tag.name">{{tag.name}}</div> 

참고.

+0

감사합니다. 나는이 방법을 고려하지 않았다. 앞에 입력 필드에 태그를 가로로 표시해야합니다. 당신이 당신의 방법을 사용하여 이것을 달성 할 수있는 방법을 조언 해 줄 수 있습니까? –

+0

나는 대답을 받아 들인다. 그러나 입력 필드에 그것을 보여주기위한 나의 의도를 도울 수 있다면 나는 사과 할 것이다. http://stackoverflow.com/questions/27356429/how-to-put-item-inside-the-input-field –

+0

'input'은 자식을 허용하지 않지만 변경 핸들러를 사용하여 더 많은 태그를 배열에 푸시합니다 – charlietfl

관련 문제