- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我这里有个奇怪的问题。我采用了对我而言最合适的 JCarousel 示例 (http://sorgalla.com/jcarousel/examples/responsive/),并从中创建了一个 Angular 指令。
到目前为止一切顺利,它基本上可以工作,但我必须先触发一个框架/窗口调整大小,否则 JS 会给我一个控制台错误:
未捕获类型错误:无法读取 null 的属性“索引”- jquery.jcarousel.js:521
我在这里编写了一个 smiplyfied jsfiddle,您可以在其中重现该问题。一旦您在“结果”框架或整个窗口上触发调整大小,轮播将像魅力一样工作:
http://jsfiddle.net/nbtw3cnk/4/
我完全不知道如何解决这个问题,有什么建议吗?
提前致谢!
约翰
var carousel = function () {
return {
restrict: 'A',
replace: true,
transclude: false,
scope: {
images: "="
},
template: '<div class="jcarousel-wrapper"><div class="jcarousel"><ul><li ng-repeat="img in images"><!--<img ng-src="{{img.imageKey}}" />-->{{img.imageKey}}</li></ul></div><a href="#" class="jcarousel-control-prev">‹</a><a href="#" class="jcarousel-control-next">›</a></div>',
link: function link(scope, element, attrs)
{
var jcarousel = $('.jcarousel');
jcarousel.jcarousel({
wrap: 'circular'
});
$('.jcarousel-control-prev')
.jcarouselControl({
target: '-=1'
});
$('.jcarousel-control-next')
.jcarouselControl({
target: '+=1'
});
}
}
};
最佳答案
当images属性真正绑定(bind)成功后,需要重新加载。调用重新加载是调整浏览器窗口大小的副作用。这就是为什么您的轮播在调整大小后可以正常工作的原因。
您还应该避免在 Angular Directive(指令)中使用 jQuery 类选择器。当您的指令的多个实例位于同一页面上时,它可能会导致问题。这是您的指令的修改后的工作版本(jsfiddle):
angular.module('testApp', []).directive('carousel', carousel);
function carousel() {
return {
restrict: 'A',
replace: true,
transclude: false,
scope: {
images: "="
},
template: '<div class="jcarousel-wrapper"><div class="jcarousel"><ul><li ng-repeat="img in images"><!--<img ng-src="{{img.imageKey}}" />-->{{img.imageKey}}</li></ul></div><a href="javascript:void(0)" class="jcarousel-control-prev">‹</a><a href="javascript:void(0)" class="jcarousel-control-next">›</a></div>',
link: function link(scope, element, attrs) {
var container = $(element);
var carousel = container.children('.jcarousel')
carousel.jcarousel({
wrap: 'circular'
});
scope.$watch(attrs.images, function (value) {
carousel.jcarousel('reload');
});
container.children('.jcarousel-control-prev')
.jcarouselControl({
target: '-=1'
});
container.children('.jcarousel-control-next')
.jcarouselControl({
target: '+=1'
});
}
}
};
编辑:请注意,上面的代码使用了 jQuery 的 $()
语法。通常,您会希望在 Angular 应用程序中使用 angular.element()
。如果最初引入 Angular 时 jQuery 存在,angular.element()
将只是 $()
的别名。但是,jsFiddle 在包含 jQuery 之前包含了 angular。因此,angular 依赖于 jqLite,它不理解 .jcarousel()
。
编辑 2:更新了下一个/上一个 href 以与哈希路由很好地配合。
关于javascript - AngularJs Jcarousel 实现仅在 pageresize 后有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706280/
我正在使用 jCarousel 在我的页面中显示图像轮播。它工作得很好,我没有提示,但我正在使用页面上的选项卡,当我转到另一个选项卡时,出现一个丑陋的 jCarousel 错误。基本上我想做的是当我进
我在我的项目中使用 jcarousel 插件。我使用以下函数来实现产品 slider 的分页 actualizePagination: function(element) { var jcar
我目前正在使用 JCarousel 来突出显示 Wordpress 中的“特色帖子”。轮播显示在首屏上方,作为标题的一部分。一旦加载,它就可以很好地工作,但由于我们在包含许多元素的大页面的首屏上方使用
我知道这个问题的明显答案是检查 jquery 和 jcarousel 脚本是否正确加载,但我可以在浏览器调试器中看到资源,因此认为这不是问题所在。我似乎无法让它运行脚本: j
我在我开发的网站的主页上遇到了 Javascript 错误。主页上有一个 jCarousel 滚动条,可以在配置文件之间滚动。 错误如下: this.clip[0] is undefined 位于 j
JCarousel 最近发生了变化(2011 年 1 月)。 它曾经有一种方法可以通过自动滚动实现悬停暂停。 在新版本中,我无法解决如何让自动滚动在悬停时停止: 我希望滚动在鼠标悬停时停止并在鼠标移出
我正在将 jCarousel 插件用于小型图库页面,并使用 itemloadcallback 参数动态加载轮播上的项目。 但是,我不确定这是否可能,但是有没有办法可以删除页面本身上的轮播实例并使用新的
我在设置 jCarousel 时遇到了一些问题 - www.lovejungle.com/store 基本上我希望它看起来像 www.ripcurl.com.au/?home 上的幻灯片 我已经实现了
我是一名图形设计师,我正在尝试使用一些精彩的 jquery 脚本来编写我的新作品集。我想让 jcarousel (http://sorgalla.com/projects/jcarousel/) 在鼠
我的 jquery jcarousel 插件有问题。如果我不使用“itemFallbackDimension”属性,我会收到一条错误消息“jCarousel:没有为项目设置宽度/高度。这将导致无限循环
如何修改此 jCarousel 示例,以便单击左按钮或右按钮时,轮播将继续朝该方向滚动:http://sorgalla.com/projects/jcarousel/examples/static_a
已成功添加 jcarousel 来浏览我的使用动态模板构建的 html 网站。但是,当我位于链接到的页面上时,我需要一个图像链接显示为事件状态,以便查看者知道他们在哪里。另外,每当我进入新页面时,当我
我需要做类似的事情: jQuery('#ImgCarousel').jcarousel({}); jQuery('#ImgCarouselCon').hide(); ImgCarouselCon 是包
我正在使用插件 jCarousel ( http://sorgalla.com/projects/jcarousel/ ),而不是图像滑入(如“带有自动滚动的轮播”演示) 我希望图像淡入。用法是一个自
var carousel = jQuery('#mycarousel').data('jcarousel'); var index = carousel.size() + 1; carouse
$(function() { $('.jcarousel') .jcarousel({ auto: 1, animation: { duration: 3000, easing: 'linear
我正在使用 jCarousel 插件,但遇到了障碍... 我需要旋转木马在导航按钮悬停时不断滚动。将内置配置变量更改为“鼠标悬停”每次悬停仅滚动一次。 我遇到了 this similar questi
这里有一个更艰巨的挑战。 点击我的jsfiddle Here : 我正在使用这个 jQuery plugin一张专辑。每当用户单击图片时,我都想突出显示该项目。完成了! 下面是触发相册的函数:
我有一个自动完成的文本输入,它使用 jcarousel 触发一个 slider 来滚动到所选人物的图像。问题是,如果您搜索一次,它会起作用,但再次搜索会使所有图像消失。 下面是控制输入的代码: jQu
我想在 jcarousel 中显示大约 6 个项目,问题是每当jcarousel 可用的项目少于 6 个,它只是与项目。就像,如果我有 3 个项目,它们会相互重叠或分开很远。 我做错了什么?如果我们有
我是一名优秀的程序员,十分优秀!