2014-10-07 3 views
1

그리드 중 하나에서 밖으로 ng-grid를 사용하는 각형 응용 프로그램에서 ng-init 함수가 연결된 셀 템플릿이 있습니다. 그 중 하나는 dom 요소입니다.로드 된 즉시 DOM 요소를 움켜 잡는 방법

var cellTemplate = '<div class="fooProperty" ng-init="setIcon($event, \'foo\',row.entity.foo)" ng-class="{\'foo_enabled\' : row.entity.foo, \'foo_disabled\' : !row.entity.hasFoo}" ng-click="changeRole($event, \'foo\')" title="Foo Bar"></div>' 

내 지시에의 setIcon 위해 작성한 코드는 내가 데 문제가

scope.setIcon = function($event,type,iconInfo){ 
    var target = $event.target; 
    var row = (target).parent().parent(); 
    console.log(type+": "+iconInfo); 
    console.log(row); 
}; 

이라는 NG-init 함수 화재가 난에서 정의되지 않은의 TypeError: Cannot read property 'target' 말하는 오류 메시지가 표시 될 때 var target = $event.target;.

편집 :

그래서 문제가 더 DOM 이벤트가 발생하지 않기 때문에 내가 ng-init$event를 사용할 수 있다는 것입니다. 이제 내 질문은 위의 코드를 편집하여 DOM 요소를로드하자 마자 DOM 요소를 잡아낼 수있는 방법입니다 (본질적으로 적절한 각도의 onload를 알 필요가 있습니다).

+2

(['$ event'가 nginit 사용할 수 없습니다] https://docs.angularjs.org/guide/expression # -event-). ng-init에서 DOM 이벤트가 발생하지 않으므로 전달할 이벤트가 없습니다. ng-repeats 특수 속성을 별명 지정하는 것 이외의 다른 ng-init을 사용하는 것도 사양 외입니다. – PSL

+0

그러면 아마도 별도의 질문을해야 할 것입니다. 자바 스크립트 또는 JQuery의 onload 이벤트에 해당하는 Angular equivalent는 무엇입니까? –

+0

동일한 질문을 업데이트하고 실제 문제를 관련 코드 및 데모로 게시 할 수 있습니다. 이것은 당신이 이런 식으로하는 x/y 문제입니다. – PSL

답변

2
대신 nginit의 지시어를 사용할 수 있습니다

:

app.directive('domLoaded', function($timeout) { 
    return { 
    link : function ($scope, $element, $attrs) { 
     $timeout(function() { 
     var row = $($element).parent().parent(); 
     console.log(row); 
     }); 
    } 
    }; 
}); 

사용 :

cellTemplate = '<div class="fooProperty" dom-loaded ng-class="{\'foo_enabled\' : row.entity.foo, \'foo_disabled\' : !row.entity.hasFoo}" ng-click="changeRole($event, \'foo\')" title="Foo Bar"></div>'