我坚持在 Backbone Marionette 应用程序中设置 jCarousel jquery 插件。使用纯主干,我找到了使用 onShow 函数的解决方案。但这在 Marionette 中不起作用这是 Marionette 的代码:
$(document).ready(function(){
MyApp = new Backbone.Marionette.Application();
MyApp.addRegions({
TagsRegion: "#mycarousel"
});
MyApp.Tag = Backbone.Model.extend({
});
MyApp.TagCollection = Backbone.Collection.extend({
model: MyApp.Tag,
url: 'json/photos.json'
});
MyApp.TagItemView = Backbone.Marionette.ItemView.extend({
template: "#tag-template",
tagName: 'li'
});
MyApp.TagCollectionView = Backbone.Marionette.CollectionView.extend({
itemView: MyApp.TagItemView,
tagName: 'ul'
});
MyApp.addInitializer(function(options){
var tagCollection = new MyApp.TagCollection();
var tagCollectionView = new MyApp.TagCollectionView({
collection: tagCollection
});
tagCollection.fetch();
MyApp.TagsRegion.show(tagCollectionView);
});
MyApp.start();
});//END jQUERY
</script>
然后我试图找到一个解决方案如何在插件中构建......
var PluginView = Backbone.View.extend({
el:$('#mycarousel'),
onShow: function(){
this.$el.jcarousel({
scroll: 1,
auto: 13,
wrap: "circular",
size: 5,
initCallback: function mycarousel_initCallback(carousel) {
$('.jcarousel-control a').bind('click', function () {
carousel.scroll($.jcarousel.intval($(this).text()));
return false;
});
},
itemVisibleInCallback: {
onAfterAnimation: function (c, o, i, s) {
i = (i - 1) % $('#mycarousel li').size();
$('.jcarousel-control a').removeClass('active').addClass('inactive');
$('.jcarousel-control a:eq(' + i + ')').removeClass('inactive').addClass('active');
}
}
}); //jcarousel end
} //onShow function end
}); //PluginView End
var plug_view = new PluginView();
plug_view.render();
if (plug_view.onShow){
plug_view.onShow();
};
问题是轮播基于 UL,带有一堆 li-tags,插件和 marionette 同时生成自己的 li-tags。因此,a 有空的 carousel-li-tags 和 marionette-generated-li-tags,其中包含要在 carousel-li-tags 中使用的所有图像和其他内容。
如果有人帮助找到这种情况的任何解决方案以及一般的木偶中的 jquery-plugins,我将不胜感激。