【问题标题】:MVVM with knockout only working in IE具有淘汰赛的 MVVM 仅在 IE 中工作
【发布时间】:2011-09-24 23:50:38
【问题描述】:

我刚刚开始使用 Knockout,并且正在学习教程。虽然它在 IE 上就像一个魅力,但在任何其他浏览器上似乎都没有,我看不出我做错了什么。

这是页面标记

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <link href="/Content/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table>
    <tbody>
        <tr>
            <td><label for="Text">Text</label></td>
            <td>
                <input type="text" id="Text" name="Text" data-bind="text:Text"/>
            </td>
        </tr>
    </tbody>
</table>
</body>
</html>

<script src="/Scripts/jquery-1.5.min.js" type="text/javascript"></script>
<script src="/Scripts/knockout-1.2.0.js" type="text/javascript"></script>
<script src="/Scripts/knockout.mapping.js" type="text/javascript" ></script>
<script type="text/javascript">

    var model = {"Text":"Test Text"};
    ko.applyBindings(model);

</script>

非常感谢您的帮助

更新

发现了我的错误,这很简单。我不会删除这个问题,以防其他人遇到这个问题。 问题又是IE!并且它似乎在 IE 中工作的事实使它看起来好像其他人有错,而事实上,IE 在解释绑定表达式方面有点松懈。

一行

<input type="text" id="Details_CompanyName" name="Details.CompanyName" data-bind="text:Details.CompanyName"/>

...应该是

<input type="text" id="Details_CompanyName" name="Details.CompanyName" data-bind="value:Details.CompanyName"/>

【问题讨论】:

  • 稍微偏离主题:您确实意识到使用var model = {"Text":"Test Text"}; 您只是在进行单向绑定。为确保输入中的任何更改都保存回 model.Text ,您必须使用 var model = {"Text":ko.observable("Test Text")};
  • 我发现如果某些东西在 IE 而不是 Firefox/Chrome 中“有效”,那么 10 次中有 9 次在您的 HTML/JS 中存在问题。 IE 正在掩盖你的错误。其他“基于更多标准”的浏览器按预期抛出错误。
  • 您应该将您的解决方案发布为答案并标记为已接受。
  • 我希望其他浏览器会抛出某种错误,我遇到了这个问题,我不知道它可能是什么。

标签: mvvm knockout.js


【解决方案1】:

这看起来可能是一个错误?

查看 herehere 的 jsFiddle 示例,了解从 to 的简单更改

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 2012-06-13
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多