0

以下简单代码会引发错误:

“未捕获的 TypeError:无法使用 'in' 运算符在 Leo 中搜索 'id'”在主干-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 一起使用?

4

3 回答 3

3

您没有正确构建模型。来自backbone.js的文档

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

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>
于 2012-09-03T10:31:42.683 回答
3

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

于 2015-07-31T13:18:33.710 回答
0

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

<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>
于 2016-11-23T21:23:43.853 回答