【问题标题】:Backbone.js inaccessible object attributesBackbone.js 不可访问的对象属性
【发布时间】:2011-09-11 01:35:08
【问题描述】:

我遇到了一个我真的无法理解的问题……我不确定主干是否对这些对象做了一些巫术,但我似乎无法获得对它们的原始访问权限。

我的基本问题是,有时当我加载页面、获取模型并渲染视图时,一个集合只会显示/渲染 50% 的时间。我认为这是模型未填充的问题,但经过一些调查,我可以看到模型已填充但无法访问。

有人有什么想法吗?我附上了一些工作和不工作的截图来说明我的观点(理智)。

页面加载正常 - 已访问模型

页面未正确加载 - 模型无法访问

正在正确加载时的对象

正确加载时的对象

【问题讨论】:

  • 听起来像一个 ajax 的东西。您是否尝试在它加载之前使用它? (但有时你很幸运,到那时它已经加载了)
  • 感觉也是这样,但在控制台中,我可以在尝试访问对象之前将其吐出。如果您查看标题为“页面未正确加载 - 模型无法访问”的图片,显示的对象将与上图相同,但我无法获取数据。
  • console.dir 比这复杂得多。它向您展示了一个活的物体,而不是真实的物体。如果您尝试记录 $.extend(true, {}, obj)(或其他克隆),那么您可以记录真实对象。
  • 我认为没有人可以帮助您,除非他们看到您用于加载模型的代码(例如,获取的函数)和为模型进行解析的代码。另外,我不确定将集合作为属性存储在模型中是否明智。我通常将属性保留为简单、不复杂的属性。
  • @Raynos 非常感谢,我不知道我可以记录真实的对象——真的很有用。看起来这就是问题所在……感谢您的帮助!如果您想将您的答案移到主要答案部分,那么我可以接受。

标签: javascript javascript-framework backbone.js


【解决方案1】:

您的调试尝试出错了。

console.dir 比这复杂得多。它向您展示了一个活的物体,而不是真实的物体。

如果您尝试记录 $.extend(true, {}, obj)(或其他克隆),那么您可以记录真实对象。

如前所述,这听起来像是一个 ajax 的东西。您是否尝试在加载之前使用它? (但有时你很幸运,到那时它已经加载了)。

我们需要更多信息。一个 jsfiddle 将是最好的。

【讨论】:

  • spot on — 使用 $.extend(true, {}, obj) 表明模型尚未加载(这是为嵌套集合获取数据的问题)。再次感谢。
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 2018-12-18
  • 2021-03-05
  • 2017-06-16
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2016-05-10
相关资源
最近更新 更多