Javascript ng在未应用指令函数的指令内部重复
我试着基本上把它包裹在一个角度指令里。同位素插件正在被调用。卡的a,b和c,但没有d的。我如何从ng repeat获得所有的.card,以便对其应用同位素指令Javascript ng在未应用指令函数的指令内部重复,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试着基本上把它包裹在一个角度指令里。同位素插件正在被调用。卡的a,b和c,但没有d的。我如何从ng repeat获得所有的.card,以便对其应用同位素指令 <div id="cardHolder" isotope> <div class="card">a</div> <div class="card w2">b</div> <div class="card">c</div> <div c
<div id="cardHolder" isotope>
<div class="card">a</div>
<div class="card w2">b</div>
<div class="card">c</div>
<div class="card" ng-repeat="user in users">d</div>
</div>
我发现了,但它似乎对我的情况没有任何作用我是angularjs的初学者。一旦我有了与customSelect jquery插件相同的问题 我已经使用$timeout(angular的setTimeout())解决了这个问题 对您而言,它将如下所示:
app.directive('isotope', ['$timeout', function($timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs, fn) {
$timeout(function() {
$(element).isotope({
itemSelector: '.card',
layoutMode: 'fitRows'
});
}, 0);
}
};
}]);
我确信这种行为的原因是小部件/插件的作用域和重新应用问题。
同位素不会等待ng重复
这个问题应该有更具体的解决办法。
但对于“快速解决”,超时将有所帮助 在ng repeat
项目上设置$watch(本例中为$watchCollection),并在浏览器呈现后使其初始化同位素容器。如果范围内出现任何新项目。用户
,请重新加载/重画包含新项目的容器:
.directive('isotope', function($timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs, fn) {
var init;
scope.$watchCollection('users', function(val){
$timeout(function(){
if(!init) {
$(element).isotope({
itemSelector: '.card',
layoutMode: 'fitRows'
});
init = true;
} else {
$(element).isotope('reloadItems').isotope();
}
});
});
}
}
});
你能为你的html提供ng repeat吗?很抱歉,我忘了格式化它,这样你就可以看到它了。@Marc Kline你是王者!今天我已经找了8个多小时了!干杯
.directive('isotope', function($timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs, fn) {
var init;
scope.$watchCollection('users', function(val){
$timeout(function(){
if(!init) {
$(element).isotope({
itemSelector: '.card',
layoutMode: 'fitRows'
});
init = true;
} else {
$(element).isotope('reloadItems').isotope();
}
});
});
}
}
});