Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Я подозреваю, что для плавного плагина может потребоваться, чтобы DOM был полностью отображен для правильной работы.
Попробуйте:
myApp.directive('slickSlider',function($timeout){
return {
restrict: 'A',
link: function(scope,element,attrs) {
$timeout(function() {
$(element).slick(scope.$eval(attrs.slickSlider));
});
}
}
});
$ 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 не использует интерполяцию ("{{...}}"): Посмотрите на этот отличный ответ , если вы хотите получить понижение на этом.)
Использование:
<div class="clearfix" data="slides"
slick-slider="{dots: false,
arrows: true,
draggable: false,
slidesToShow:3,
infinite:false}">
<div class="my-slide" ng-repeat="slide in slides">
<a><img ng-src="assets/img/{{slide.img}}"/></a>
</div>
</div>
благодаря , поэтому ответьте и этот github , который я получил от , так задал вопрос