【问题标题】:Knockout UNable to Bind $root淘汰赛无法绑定 $root
【发布时间】:2013-01-01 04:36:30
【问题描述】:

在我添加的文档中 <div data-bind="text: ko.toJSON($root)"></div> 到我的 html5 页面。不幸的是,IE8 给了我一个错误“无法将绑定应用到 $root”或类似的。

在 FF 和 Chrome 上没有问题。

如何恢复当前视图模型的 json 转储以满足调试需求?

【问题讨论】:

  • 你用的是哪个KO版本?确切的错误信息是什么?你能在 JSFiddle 中制作一个 repro 吗?因为您发布的代码在 IE8 jsfiddle.net/Vp2Zx 中运行良好
  • 消息如下:无法解析绑定。消息:[对象错误];绑定值:文本:ko.toJSON($root)
  • 我能够复制它。问题是 ko.toJSON 在内部使用 JSON.stringify,理论上 IE8 支持它,但由于某种原因它无法正常工作。参考 JSON2.js(例如这里的表单 ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js),它应该在 IE8 中工作。另请参阅此 github 问题:github.com/SteveSanderson/knockout/issues/574

标签: jquery knockout.js knockout-2.0


【解决方案1】:

我能够重现您的问题:问题不在于您的绑定,而在于 ko.toJSON 调用。 Knockout 在内部使用 JSON.stringify 函数,在您的情况下失败。

虽然Is JSON.stringify() supported by IE 8? 答案是

但有时它只是不起作用:JSON object undefined in Internet Explorer 8,因为 IE 过于挑剔,如果您的 html 标记中有错误,它将退回到没有定义 JSON.stringify 的兼容模式。

你有两个选择:

  • 检查您的 HTML 以使 IE8 正常运行,并且不要以兼容模式呈现它
  • 使用JSON2 库,该库在旧版浏览器中提供JSON.stringify

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2016-01-22
    • 2015-03-23
    • 1970-01-01
    • 2013-02-04
    • 2014-05-29
    • 2017-10-24
    • 2016-06-03
    相关资源
    最近更新 更多