2015-08-06 3 views
-1

Я пытаюсь делать то, что был дан ответ в этой теме:AngularJS и JQuery оправдано

Angularjs directive wrapping ng-repeat

я могу заставить его работать как в потоке, но если я обновлю DIRS массив, используя угловые (ng-click изменить массив), оправданная галерея не обновляется. Кто-нибудь знает, как заставить директиву обновлять страницу при обновлении массива dirs?

UPDATE решаемые его, создав эту директиву:

directive('justified', ['$timeout',function ($timeout) { 
    return { 
    restrict: 'A', 
    link: function (scope, element, iAttrs) { 
     scope.$watch('myModel', function(){ 
      $timeout(function() { $(element).justifiedGallery(); }); 
     }); 
     } 
    }; 
}]); 
+0

Пожалуйста, попробуйте снова написать хороший вопрос. Если вам нужна помощь, вы можете прочитать это: http://stackoverflow.com/help/how-to-ask. Мы не знаем, что не так с вашим кодом, и без каких-либо подробностей никто не сможет вам помочь. –

ответ

0

Чтобы заставить угловую область, чтобы обновить вы можете запустить $scope.apply(), но это дорогой метод, так что используйте его с осторожностью

app.directive('repeatDone', [function() { 
return { 
restrict: 'A', 
link: function (scope, element, iAttrs) { 
     var parentScope = element.parent().scope(); 
     if (scope.$last){ 
      parentScope.$last = true;   
     } 
     $timeout(function(){ 
     $scope.$apply(); 
     }) 
    } 
    }; 
}]); 
+0

Спасибо, это было то, что я ищу. К сожалению, это не работает все время. Если я сменил область при первом запуске, но не во второй раз. – user439781

+0

Попробуйте вместо того, чтобы делать $ scope, используйте 'scope. $ Apply()' и 'parentScope. $ Apply()' – cjds

+0

та же проблема. Он работает в первый раз, когда область обновляется, но область не обновляется во второй раз – user439781

Смежные вопросы