Backbone.js 主干-更好地理解模板

Backbone.js 主干-更好地理解模板,backbone.js,backbone-views,underscore.js-templating,Backbone.js,Backbone Views,Underscore.js Templating,我在轨道内部使用主干。我有一种非常奇怪的行为,我试着去理解它为什么会发生 我的模型有一个可选属性avatar\u url。我用它来生成一个img标签。我得到了以下html代码: 当我查看我的代码时,我意识到我还有以下静态代码: 我的结论是,出于某种原因,主干在计算给定变量的值时也会考虑现有的DOm对象 我想深入挖掘模板解析器并对其进行调试,以便更好地了解它的登录名,但找不到如何进行。 我的问题是,为了给模板变量赋值,使用主干的逻辑是什么 编辑: 在视图中,我实现了一个渲染方法,该方法执行以下操作

我在轨道内部使用主干。我有一种非常奇怪的行为,我试着去理解它为什么会发生

我的模型有一个可选属性avatar\u url。我用它来生成一个img标签。我得到了以下html代码:

当我查看我的代码时,我意识到我还有以下静态代码:

我的结论是,出于某种原因,主干在计算给定变量的值时也会考虑现有的DOm对象

我想深入挖掘模板解析器并对其进行调试,以便更好地了解它的登录名,但找不到如何进行。 我的问题是,为了给模板变量赋值,使用主干的逻辑是什么

编辑: 在视图中,我实现了一个渲染方法,该方法执行以下操作:

render: function() {
  var viewData = this.model.toJSON();
  this.$el.html( this.template( viewData ) );
  return this;
}

没有任何主干魔法来处理和渲染模板。视图的渲染方法是,并且具有模板方法或属性是-同样,没有为您实现任何功能,没有魔力

有一些构建在主干之上的框架,比如木偶,它们添加了这种自动功能。如果没有这些,您将不得不深入研究Rails代码以了解发生了什么。因为主干视图实际上不会向DOM添加任何内容,也不会解析模板,除非您为其编写代码


主干视图提供的唯一现成的东西是容器元素,它在实例化时自动生成,但不附加到DOM

你说得对,我刚刚编辑了我的问题并添加了缺少的呈现方法代码。执行摘要:下划线模板中的值都不是可选的,你的toJSON方法需要在返回的对象中提供所有值;即使它们的值未定义或为空,它们仍然需要存在。顺便说一句,这是一个好问题,即使它是重复的。我只知道这是一个副本,因为您发现了DOM问题,我记得在回答副本时对此感到困惑。我不知道如果不是这样的话,我是否能找到复制品。