【问题标题】:Backbone.js: Why can't I retrieve the model in this case?Backbone.js:为什么在这种情况下我无法检索模型?
【发布时间】:2014-01-05 13:47:11
【问题描述】:

我正在尝试检索模型,因为我需要访问某些属性,但我不能。我在一个视图中,它扩展了另一个视图。视图如下所示:

var ImageGridControlView = GridControlView.extend({
//.... stuff ....
alert(this.model.get('property')) //This gives me an error in console and nothing is alerted.
});

在上述代码扩展的类中,可以检索模型,如下所示:

var GridControlView = ControlView.extend({
//.... stuff ....
alert(this.model.get('property')) //This shows the property value correctly
});

为什么无法从 ImageGridControlView 中检索模型?模型在不同班级、孩子等之间的持久性是什么?我是 Backbone 新手,官方文档只对模型进行了粗浅的介绍。

【问题讨论】:

  • 我不确定,但您尝试过使用 _.bindAll() 吗?

标签: backbone.js backbone-views


【解决方案1】:

您的 sn-ps 太小,无法真正找到问题,所以我们只能猜测。最有可能的候选人是:

  • 您正在由未正确绑定的事件绑定触发的函数内部访问this.model,因此this 实际上并不是您的视图实例。它可以是窗口对象的源 DOM 元素。
  • 您没有在提供给视图构造函数的选项对象中传递 model 属性

【讨论】:

  • 谢谢... 我怎么知道型号是什么?有什么方法可以检查吗?任何我可以调用的对象,可以记录到控制台的东西?
  • 模型不是自动的。您必须将它传递给选项对象中的视图构造函数。你可以做console.log(this.model),但它会是undefined,因为你没有定义它。您还没有发布有用的 sn-p。这样做。
  • 我很乐意,但这是一个很大的系统,我不知道要发布什么“sn-ps”。有数百个文件,其中很多文件相互调用、扩展和嵌套。
  • 我接受了答案,因为这个问题与构建视图时传递模型属性有关。谢谢!
猜你喜欢
  • 2016-07-29
  • 2013-07-22
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多