Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 木偶和脊梁。在视图中呈现javascript滑块_Backbone.js_Render_Marionette - Fatal编程技术网

Backbone.js 木偶和脊梁。在视图中呈现javascript滑块

Backbone.js 木偶和脊梁。在视图中呈现javascript滑块,backbone.js,render,marionette,Backbone.js,Render,Marionette,代码如下: NewEntry_CategoryView = Backbone.Marionette.ItemView.extend({ template: "#NewEntry_Category-template", tagName: "p", initialize: function () { $("#sliderContainer").slider(); } }); NewEntry_CategoriesView = Backbone.Marionette.CompositeV

代码如下:

NewEntry_CategoryView = Backbone.Marionette.ItemView.extend({
template: "#NewEntry_Category-template",
tagName: "p",

initialize: function () {
    $("#sliderContainer").slider();
}

});

NewEntry_CategoriesView = Backbone.Marionette.CompositeView.extend({
template: "#NewEntry_Categories-template",
tagName: "div",
itemView: NewEntry_CategoryView,
itemViewContainer: '#categoryContainer',

appendHtml: function (collectionView, itemView) {
    collectionView.$("#categoryContainer").append(itemView.el);
}
});

当我显示NewEntry\u CategoriesView时,为什么jquery ui滑块没有呈现?

DOM事件/像
slide()这样的操作不会对视图对象的初始化产生任何影响,因为还没有这样的DOM元素可用

相反,您需要监听视图的
dom:refresh
,以操作其dom元素

因此,只需将代码放入ItemView中的
onDomRefresh

onDomRefresh: function(){ $('#sliderContainer').slide() };
这是一个直接修复。但还有两件事需要改进:

  • 尽可能不要调用此视图之外的其他div。在这种情况下,如果
    #sliderContainer
    属于另一个视图,则发送一个事件以允许它自己滑动。这不是CategoryView的工作。如果它在当前视图中,请使用
    this.$el.find(“.some div”)
    或更好的
    ui
    对象来引用它

  • 您的collectionView的appendHtml是不必要的。木偶也采取这种常见的情况


  • 如果我在onShow:function(){…}方法中创建滑块,那么我将获得一个滑块,但仅用于正在显示的第一个itemview
    collectionView.$(“#categoryContainer”)
    方法中的
    appendHtml
    ?在我看来,你没有充分的理由覆盖了这个方法。你能试着移除它并检查它是否有效吗?我想一个解决方案是将它放在onShow方法中谢谢你,我做了改进,现在它可以工作了。我把它放在onShow方法思想中。这辆车有什么区别?只有两个不同的事件?现在我使用:$(self.el).find(“#sliderContainer”).slider({@user3166101,
    onDomRefresh
    onShow
    更可靠地进行DOM操作,其中元素在DOM中得到保证。