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 去除脊椎周围的元素。木偶_Backbone.js_Marionette - Fatal编程技术网

Backbone.js 去除脊椎周围的元素。木偶

Backbone.js 去除脊椎周围的元素。木偶,backbone.js,marionette,Backbone.js,Marionette,我有以下看法: return Marionette.ItemView.extend({ el: '<section>', template: JST['app/scripts/templates/grid.ejs'], 问题是:如何去掉周围的section元素?我试图省略el属性,但这给了我以下奇怪的div: <div productname> 关于Roger主干网的工作需要周围的元件。它本质上是视图所在的容器/占位符,无论

我有以下看法:

return  Marionette.ItemView.extend({

        el: '<section>',

        template: JST['app/scripts/templates/grid.ejs'],
问题是:如何去掉周围的section元素?我试图省略el属性,但这给了我以下奇怪的div:

<div productname> 


关于Roger

主干网的工作需要周围的元件。它本质上是视图所在的容器/占位符,无论其内容是否已呈现

如果你<强>真正的< /强>坚持不拥有容器,那么我会考虑诉诸如下:


我之所以说“诉诸”是因为,在我看来,这不是脊梁骨应该被使用的方式,可能会产生副作用。(我不太确定当该区域的视图尝试重新渲染时会发生什么;它的
el
元素指向什么?

要扩展Scott的答案,尝试并强制删除周围的视图标记可能是一个非常糟糕的主意

所有主干视图都包含在DOM元素中。鉴于这一事实,您有两个主要选择:

  • 让主干将视图放入默认的
    div
    元素中
  • 使用
    el
    标记名
    属性指定要用哪个元素包装视图
如果“额外”标记产生了问题(例如,您需要生成一个特定的HTML集用于插件),那么您没有正确定义包装元素。关于这个主题的更多信息,请看我的这篇博文:

基于JSFIDLE编辑:您奇怪行为的原因是您将模型实例传递给
initialize
函数。然后将其解释为视图的属性,并将其设置为HTML属性

向视图提供模型实例的正确方法是:

new App.FooterView({
    model: new App.Model()
})

换句话说,您向视图提供了一个javascript对象,该对象具有
model
属性。如果你想快速学习木偶的基础知识,请查看我的书的免费预览:(你将在第15-21页找到如何使用模型实例化视图)

有一件事仍然让我困惑,那就是奇怪的div标记,当我忽略el属性时。它看起来确实很奇怪,但是您需要建立一个JSFIDLE来重现这个问题,否则就不可能排除故障。很可能,您正在向视图传递某种属性(请参阅)。“我的细节模型”中的所有属性最终都作为div标记上的属性。到目前为止,我还不能用JSFIDLE重现这一点,问题是不能将模型作为参数传递给视图。下面的jsiddle记录了这个问题([link]),当然可以:我还用您的问题更新了我的答案。
Marionette.Region.prototype.open = function(view){
  this.$el.empty().append(view.$el.children());
}
new App.FooterView({
    model: new App.Model()
})