嵌套属性中父对象的访问属性

时间:2011-07-12 02:09:19

标签: javascript backbone.js

我有这个:

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属性?

3 个答案:

答案 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;