【问题标题】:Backbone.js Uncaught TypeError: Cannot use 'in' operator to search for 'id' inBackbone.js Uncaught TypeError:无法使用“in”运算符搜索“id”
【发布时间】:2012-09-03 08:35:28
【问题描述】:

下面的简单代码会抛出错误:

"未捕获的类型错误:无法使用 'in' 运算符搜索 'id' in Leo”在主干-min.js:9

http://jsfiddle.net/nW7KF/

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
<script>
var User = Backbone.Model.extend({
    initialize: function(n) {
        this.name = n;
    }
});

var user = new User("Leo");
</script>
</body>
</html>​

如何使这段代码与 Backbone.js 一起使用?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    您没有正确构建模型。来自backbone.js'documentation

    在创建模型实例时,您可以传入属性的初始值,这些属性将在模型上设置。如果你定义了一个初始化函数,它会在模型​​创建时被调用。

    new Book({
      title: "One Thousand and One Nights",
      author: "Scheherazade"
    });
    

    所以你会像这样构建你的模型:http://jsfiddle.net/nW7KF/2/

    <script>
        var User = Backbone.Model.extend({});
        var leo = new User({ name: "Leo" });
        console.log(leo.get("name"));
    </script>
    

    【讨论】:

    • 谢谢。有没有办法在模型定义中而不是在实例化期间定义模型的结构(用户有一个“名称”)?
    • 不要define不,但你可以覆盖Model.validate(),或者使用插件在模型上强制实施模式。
    • @tucson:还有Model.defaults 可以帮助解决这类问题。
    【解决方案2】:

    前几天我遇到了同样的错误,问题是我使用的是更新版本的 Backbone (1.2.1),它在实例化模型时显然与以前略有不同。我一直在使用该库的 1.1.1 版本,但是当我更新到 1.2.1 时,我开始看到同样的错误。当我恢复到 1.1.1 时,错误不再存在。如果您看到相同的错误并进行相同的库更新,则可能需要注意。

    【讨论】:

    • 我遇到了同样的问题。
    • 我遇到了同样的问题。请给我一个解决方案。
    【解决方案3】:

    您链接的文件已过时。请更新它们。

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.cdnjs.com/ajax/libs/underscore.js/1.8.2/underscore-min.js"></script>
    <script type="text/javascript" src="https://ajax.cdnjs.com/ajax/libs/backbone.js/1.2.1/backbone-min.js"></script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2016-03-03
      • 2013-01-15
      相关资源
      最近更新 更多