Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng在未应用指令函数的指令内部重复_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript ng在未应用指令函数的指令内部重复

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

我试着基本上把它包裹在一个角度指令里。同位素插件正在被调用。卡的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 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();
          }
        });
      });  
    }
  }
});