我一直在寻找一些推迟并观看示例,但发现很难与我的代码相关(想想我可能设置错了)。基本上我有一个返回一些web服务内容的指令,在这个内容中有一个jquery"阅读更多"我需要激活。
但我认为更多的内容是在内容在页面之前运行所以不起作用。即如果我在read-more init周围放置$ timeout并等待3秒就可以了,但是设置一个任意时间值是不好的做法呢?
nccaApp.directive('glossary', ['dataFactory', '$http', '$timeout', '$location', function (dataFactory, $http, $timeout, $location) {
return function (scope, element, attrs, ctrl, transclude) {
strURL = "/glossary/glossaryService.aspx?CategoryID=" + attrs.categoryid;
var location = window.location.href;
$http.get(strURL, { cache: true }).success(function (data) {
element.html(dataFactory.glossaryText(element.html(), data))
// Init readmore here
var lesslink = 'Read less';
var moreLink = 'Read more';
$("article.read-more").readmore({
lessLink: '<a href="#">' + lesslink + '</a>',
moreLink: '<a href="#">' + moreLink + '</a>'
});
});
}
}
]);
&#13;
答案 0 :(得分:0)
你是正确的,使用$timeout
解决时间问题是一个黑客。你能试一下,看看它有用吗?
element.find("article.read-more").readmore({
lessLink: '<a href="#">' + lesslink + '</a>',
moreLink: '<a href="#">' + moreLink + '</a>'
});
此外,您可能有理由设置元素的html,但通常在Angular中,最好通过模板运行数据。这可能是您遇到问题的另一个潜在原因。