2014-10-07 55 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>' 
相關問題