【问题标题】:Dojo ItemFileWriteStore issue with IE7IE7 的 Dojo ItemFileWriteStore 问题
【发布时间】:2009-09-24 20:24:27
【问题描述】:

我有一个嵌入在 tabContainer 中的 ContentPane 中的网格。 IE7加载itemfilewritestore的时候会弹出错误。

代码:

var theData = {标识: id , items[]}; var theStore = new dojo.data.ItemFileWriteStore({data: theData});

console.debug(theStore); // 这会引发一些奇怪的错误

错误: {close:function(_81)if(!this.isDirty)........商店中存在未保存的更改请在调用关闭之前保存或还原更改。

此错误仅在 IE7 中显示。 FF没有问题,正确渲染数据。是的,我知道这段代码中没有数据,但在实际代码中,数据是稍后添加的。

【问题讨论】:

  • console.debug 在所有浏览器中并不一致。您确定 console.debug 调用不是导致问题的原因吗?此外,尝试在没有“构建”的情况下从源代码运行 Dojo,以便像 _81 这样的变量名将通过未压缩。在 Firebug 或 Visual Studio 中,您实际上应该能够获取异常的堆栈跟踪,或者放入断点/调试器语句以查看发生了什么。
  • 我很确定 debug.console 命令不是问题。错误也很明显,因为网格本身没有显示存储中的数据。我把 console.debug 命令用来跟踪错误。获取源后提供的错误:
  • {close:function(/* object? */ request) { // 摘要: // 重写 ItemFileReadStore 的基本关闭函数以添加检查存储状态。 // 描述: // 覆盖 ItemFileReadStore 的基本关闭函数以添加检查存储状态。 // 如果存储仍然是脏的(未保存的更改),那么将抛出错误而不是 // 清除内部状态以从 url 重新加载。 //如果不脏则清除...否则抛出错误
  • if(this.clearOnClose){ if(!this.isDirty()){ this.inherited(arguments); }else if(this._jsonFileUrl !== ""){ //仅当存储脏并且我们从 url 加载时才抛出错误(在保存状态之前无法从 url 重新加载)。 throw new Error("dojo.data.ItemFileWriteStore: 存储中存在未保存的更改。请在调用关闭之前保存或还原更改。"); } }
  • } onDelete:function( /* item */ deletedItem){ // 摘要:见 dojo.data.api.Notification.onDelete() // 不需要做任何事情。这个方法在这里只是为了让 // 客户端代码可以将观察者连接到它。 } }

标签: internet-explorer-7 dojo grid


【解决方案1】:

此问题与描述不符。无论如何,错误都不是商店。在深入挖掘之后,我发现真正的问题是解析正在导入的 javascript。逐步解决问题是因为 JSON 对象使用术语“类”作为属性。这似乎违反了 IE 的“标准”。

【讨论】:

  • "class"、"default" 和许多其他 JavaScript 保留字会执行此操作。很高兴你抓住了它。 JSON 声明所有键都应该被引用。在 JSON(和 IE)中使用 { "class":"foo" } 是完全合法的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2011-08-27
相关资源
最近更新 更多