【发布时间】:2016-11-14 05:29:51
【问题描述】:
我有以下指令:
.directive("picSwitcher", ["$timeout", function($timeout){
return {
restrict: "A",
scope: {
pics: "=",
fadeTime: "@",
timeForPic:"@"
},
template: '<img ng-repeat="pic in pics" src="{{pic.url}}" style="display: none"/>',
link: function ($scope, element){
//some code...
$(element.find("img")[0]).css({display: "block"});
}
};
}])
我的问题是,当我的链接函数被调用时 - ng repeat 还没有“编译”(这里应该使用什么词而不是编译?)
所以我试图设置未定义的 css.. ng-repeat 完成后如何强制链接功能运行?!
现在我正在通过将$(element.find("img")[0]).css({display: "block"}); 替换为$timeout(function(){
$(element.find("img")[0]).css({display: "block"});}, 200); 来解决这个问题
但这感觉'hacky'
为了以更简单的方式实现我的目标,我还缺少什么吗? 一般来说,在自定义指令的链接函数中操作 ng-repeat dom 元素的最佳方法是什么?
谢谢, 吉米。
【问题讨论】:
-
也许你会在 html 中做模板而不是在directice 中它会起作用?
标签: javascript angularjs angularjs-ng-repeat angular-directive angular-directive-link