$ timeout все еще не давал достаточным для инициализации данных для моего сценария, поэтому я немного изменил директиву, чтобы посмотреть, как данные будут иметь контент (это также может иметь эффект перезаписи, когда данные изменяются, а не как только DOM инициализирует onLoad, если вы измените использование isInitialized):
app.directive('slickSlider', function () {
return {
restrict: 'A',
scope: {'data': '='},
link: function (scope, element, attrs) {
var isInitialized = false;
scope.$watch('data', function(newVal, oldVal) {
if (newVal.length > 0 && !isInitialized) {
$(element).slick(scope.$eval(attrs.slickSlider));
isInitialized = true;
}
});
}
}
});
Таким образом, angularJS наблюдает за загрузкой данных и только перехватывает пятно, когда данные имеют длину.
(требуется btw $ watch вместо $ observ, потому что атрибут data не использует интерполяцию ("{{...}}"): Посмотрите на этот отличный ответ , если вы хотите получить понижение на этом.)
Использование
:
благодаря , поэтому ответьте и этот github , который я получил от , так задал вопрос