我有这个:
var SomeNamespace = {
Model: Backbone.Model.extend(),
View: Backbone.View.extend({
model: new this.Model, //<-- how do I properly create a new object from parent to here?
myMethod: function()
{
alert(this.model.MyName);
}
})
}
我添加了评论,Model
未定义,我理解为什么,我想知道的是,如何访问父级的Model
属性?
答案 0 :(得分:0)
'this',在你的情况下是指Backbone.View.extend我相信,你需要做以下事情:
model: new SomeNamespace.Model
答案 1 :(得分:0)
var SomeNamespace = {
Model: Backbone.Model.extend(),
View: Backbone.View.extend({
model: null, //<-- how do I properly create a new object from parent to here?
myMethod: function()
{
alert(this.model.MyName);
},
init: function(){//runs when creating an instance of SomeNamespace.View
this.model = new SomeNamespace.Model();
}
})
}
因为模型还没有定义,与其他语言相反,你不能在JS中这样做。您需要在类的构造函数中将var初始化为Model。
答案 2 :(得分:0)
取自Backbone.js的扩展文档(http://documentcloud.github.com/backbone/#Model-extend):
简要介绍一下super:JavaScript没有提供一种简单的方法来调用super - 在原型链上定义的同名函数更高。如果你覆盖像set或save这样的核心函数,并且想要调用父对象的实现,你必须按照以下几行显式调用它:
var Note = Backbone.Model.extend({
set: function(attributes, options) {
Backbone.Model.prototype.set.call(this, attributes, options);
...
}
});
这有用吗?
Backbone.Model.prototype.model.MyName;