2014-10-28 47 views
0

我学习Backbone.js的,我找不到什么是错,此代码:Backbone.js的:一个简单的渲染功能

NView = Backbone.View.extend({ 
    tagName: 'span', 
    render: function(){ 
     $(this.el).html('<h3>' + this.model.get('comments') + this.model.get('minutes') + '</h3>'); 
    } 
}); 

newView = new NView({ model: NModelo }); 

newView.render(); 

console.log(newView.el); 

,我认为它应该是记录此:

<span> <h3> .... </h3> </span> 

但它只是记录一个<span> </span>,无标签之间的任何东西,为什么呢?

+1

似乎做工精细(http://jsfiddle.net/ambiguous/nds1qco3/)。什么是'NModelo'?名称建议'NModelo = Backbone.Model.extend(...)',而不是视图期望的'NModelo = new SomeModel'。 – 2014-10-28 19:40:17

+0

这有点奇怪。 NModelo ='Backbone.Model.extend()',抱歉没有遵循命名约定。似乎@ jgillich的答案是正确的,虽然我不完全明白为什么。 – alejoss 2014-10-28 20:40:32

+0

你是否错过了控制台中小小的'▶'字形?有些浏览器希望您手动打开DOM节点以查看里面的内容。 – 2014-10-28 21:28:41

回答

1

el属性是一个DOM元素,而不是一个字符串。要获得完整的HTML字符串,可以使用使用outerHTML属性:

console.log(newView.el.outerHTML); 
+0

嗨,这个作品,谢谢。但是,请您详细说明一下吗?当我做'console.log($(anyjqueryelement).html())'时,它可以正常工作。 – alejoss 2014-10-28 20:46:07

+0

@alejoss'$ .fn.html'返回'innerHTML'属性,就像'outerHTML',但没有元素本身。请参阅https://developer.mozilla.org/en-US/docs/Web/API/Element – jgillich 2014-10-28 21:18:02