2014-10-07 30 views
1

我正在使用ng-grid在其中一个网格上使用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元素后立即获取(实质上我需要知道onload的等效角度)?

+2

['$ event'不可用nginit(https://docs.angularjs.org /导向/表达#-event-)。没有事件可以通过,因为在ng-init上没有发生DOM事件。除了别名重复特殊属性外,使用ng-init也不符合规范。 – PSL 2014-10-07 15:51:14

+0

然后,我应该问一个单独的问题,而不是。什么是JavaScript或JQuery的onload事件的正确的Angular等价物? – 2014-10-07 15:58:57

+0

您可以更新相同的问题并使用相关代码和可能的演示发布您的实际问题。这是一个x/y问题,它可以让你这样做。 – PSL 2014-10-07 15:59:56

回答

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>' 
相关问题