Javascript 如何在加载DOM元素后立即捕获它

Javascript 如何在加载DOM元素后立即捕获它,javascript,angularjs,ng-grid,angularjs-ng-init,Javascript,Angularjs,Ng Grid,Angularjs Ng Init,我正在开发一个angular应用程序,它在一个网格上使用ng grid,我有一个单元格模板,其中一个dom元素上附加了一个ng init函数 var cellTemplate = '<div class="fooProperty" ng-init="setIcon($event, \'foo\',row.entity.foo)" ng-class="{\'foo_enabled\' : row.entity.foo, \'foo_disabled\' : !row.entity.hasFo

我正在开发一个angular应用程序,它在一个网格上使用ng grid,我有一个单元格模板,其中一个dom元素上附加了一个ng init函数

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>'
我遇到的问题是,当ng init函数启动时,我收到一条错误消息,上面说
TypeError:cannotreadproperty'target'
of undefined at
var target=$event.target

编辑:


所以问题是我不能在
nginit
上使用
$event
,因为没有发生DOM事件。我现在的问题是,如何编辑上面的代码,以便在加载DOM元素后立即捕获它(本质上我需要知道onload的正确角度等价物)?

您可以使用指令而不是ng init:

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>'
cellTemplate=''

。没有要传递的事件,因为ng init上没有发生DOM事件。除了别名重复特殊属性之外,使用ng init也不符合规范。那么我可能应该问一个单独的问题。JavaScript或JQuery的onload事件的正确角度等价物是什么?您可以更新相同的问题,并用相关代码和可能的演示发布实际问题。这是一个x/y问题,让你这样做。我做了你建议的编辑。这是你的答案。
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>'