我正在尝试编写一个具有模板的指令。该模板正在呈现一些我想要检索的 DOM 元素。但是,当我尝试在链接函数中检索我的 DOM 元素时,找不到 DOM 元素。如果我在选择找到的元素之前添加一个 window.setTimeout 方法。在尝试操作链接函数中的 DOM 之前,如何等待模板完成渲染?
这是我正在尝试做的指令代码:
module.directive('testLocationPicker', function() {
var linkFn = function(scope, element, attrs) {
console.log('in linking function');
window.setTimeout(function() {
var positions = $('.position');
console.log('number positions found: ' + positions.length);
positions.click(function(e) {
console.log('position clicked');
scope.$apply(function() {
scope.selectedPosition = $(e.currentTarget).html();
});
});
}, 500);
};
return {
link: linkFn,
restrict: 'E',
template: 'Choose a position: <div class="position" ng-repeat="position in positions">{{position}}</div>',
}
});
我有一个我想要做的事情的 JS Fiddle:http: //jsfiddle.net/bdicasa/XSFpu/42/