BackboneJS访问模型属性的问题

时间:2014-08-01 10:27:53

标签: javascript jquery rest backbone.js

我的BackboneJS视图编码如下;

var MyView = BaseView.extend({
    initialize: function() {
        this.myModel = new myModel();
        this.myModel.url = "api/myRESTApi/";
        this.myModel.fetch();
    },
    render: function () {
        var self = this;

        var myPanel = new Panel({
            title       : "My Custom Panel component",
            id          : "my-panel",
        });

        myPanel.on("onRender", function() {
            self.myModel.get("myModelAttr").toJSON()
        }   
    }

}); 

现在问题出在myPanel.on(" onRender")

我无法获得

  

self.myModel.get(" myModelAttr&#34)

在调试时,我看到self.myModel的属性为null。

即使我从REST资源中正确地获得了响应,我也会发生这种情况,并且我还在我的模型中正确解析和设置属性。

我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

可能的一点是,当异步运行时,模型还没有被fetch填充,尝试用成功语句包装fetch然后渲染。

var self = this;

this.myModel.fetch({
    success:function () {
        // do something here like self.render()
    }
});

这样模型已经更新!或者您可以在initialize方法中按如下方式侦听属性更改事件:

this.listenTo(this.myModel, 'change', this.render);

根据您尝试从模型中获取的数据,除非渲染到模板,否则您不应该在语句末尾使用toJSON()。