我的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资源中正确地获得了响应,我也会发生这种情况,并且我还在我的模型中正确解析和设置属性。
我在这里做错了吗?
答案 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()。