2013-10-27 4 views
2

Я сделал $(document).foundation() огнь по viewContentLoaded, но по какой-то причине он до сих пор не работает:INITIALIZING zurb фонда с angularjs

var myApp = angular.module("myApp", []).run(function($rootScope) { 
    $rootScope.$on('$viewContentLoaded', function() { 
     console.log('loaded!'); 
     $(document).foundation(); 
    }); 
}); 

Смотрите демо здесь: http://jsfiddle.net/UpwvU/

Я следовал несколько ответов from this question, но ни один из них не преуспел.

ответ

4

$viewContentLoaded звучит как простое событие .... но, к сожалению, это не означает, что все элементы DOM были визуализированы. К сожалению, как угловой делает много переваривать циклов это практически невозможно для того, чтобы definitvely сказать ВСЕ СДЕЛАНО

Чтобы доказать это попробовать следующее:

.run(function($rootScope, $timeout) { 
    $rootScope.$on('$viewContentLoaded', function() { 
      console.log('loaded!'); 
      console.log($('.has-tip').length,' Num tips');// likely zero as ng-repeat hasn't completed 

      $timeout(function(){   

      console.log($('.has-tip').length,' Num tips after timeout'); // 5 
      },300) 
     }); 
}); 

Поместите свой код в фундамент $timeout block и посмотреть, если это помогает. Что касается продолжительности ждать .... не уверен, что лучшее предложение

DEMO with $timeout

+0

Это золото. Вы только что решили проблему, с которой я боролся в течение 3 месяцев. Блокировка таймаута является обязательной, если вы загружаете фундамент с помощью angularjs, особенно если вы хотите, чтобы ваши переходы выполнялись бесперебойно! 300 мс - абсолютный минимум. –

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