我一直在玩Backbone.js,遇到了一些意外。看起来,如果我明确地设置属性,那么toJSON()(以及作为属性的结果)将只返回一个JSON对象。这里的问题:model.toJSON()返回空对象
- 扩展/继承一个样本对象的一些数据
- 抢得到的构造
- 实例化/新实例
- 调用
toJSON()
功能
我预期调用返回我的对象的所有属性(继承和绑定),但我回来了一个空的{}
对象。
这里的示例代码:
var TestModelConstructor = Backbone.Model.extend({ name: "test", num: 483 });
var testinstance = new TestModelConstructor;
console.log(testinstance.name); //prints: test
console.log(testinstance.num); //prints: 483
console.log(JSON.stringify(testinstance.toJSON())); //prints: {}
console.log(testinstance.attributes); //again empty object
testinstance.newattr = "adding new attribute";
console.log(testinstance.attributes); //{} ????
//either set explicitly by calling "set" or via constructor/initialize
testinstance.set({ label: "i can setz attributez" });
console.log(JSON.stringify(testinstance.toJSON()));
//{"label":"i can setz attributez"}
console.log(testinstance.attributes); //{"label":"i can setz attributez"}
无论这种行为是奇怪的或我错过了文档中的东西。
谢谢。再次查看属性部分的确能够澄清这个问题,我希望文档在这个MVC框架中使用的约定更加清晰,当我第一次阅读它的时候,我已经把它作为推荐而不是公约。 – 2012-03-07 17:25:49
没问题。实际上我后来碰到了一些类似的困惑 - 我发现你需要的大部分信息都在文档中,只是需要一些正确的阅读才能把它弄清楚。无论如何,如果您认为这是正确的答案,请将其标记为正确。 – obmarg 2012-03-07 17:40:24