我已经调用了一个视图(menuview)传递一个var(prova)但是从视图中调用undefined(console.log(this.model),在menuview中)。任何人都可以帮助我找到错误吗?
ROUTER
home: function() {
new BarraScreamView();
new MenuView();
var self=this;
var amicizie= new Amicizie();
amicizie.fetch({
success: function(object) {
console.log(object);
var prova=object.where({invitante: Parse.User.current().id,conferma:0});//mettere
invitato
var num=prova.length;
new MenuView({model:prova});<<<---------
},
error: function(amici, error) {
}
});
MENUVIEW
var MenuView = Backbone.View.extend({
el: $("#menu_container"),
events: {
},
template: Handlebars.compile(template),
initialize: function () {
console.log(this.model);<<<------------
this.render();
console.log("menuview");
},
答案 0 :(得分:3)
原因很简单..
您似乎在2个地方创建了MenuView()
home: function () {
new BarraScreamView();
new MenuView(); <----- First Instance here
var self = this;
var amicizie = new Amicizie();
amicizie.fetch({
success: function (object) {
new MenuView({ <----- Second Instance here
model: prova
});
视图按加载顺序初始化。使用
创建新视图时 new MenuView();
它将点击视图的初始化方法
initialize: function () {
console.log(this.model);<<<------------
} ^ ^
| ------ Corresponds to the model passed in
But there is nothing passed here
corresponds to the view
所以它在第一种情况下记录未定义。
答案 1 :(得分:1)
我打算在这里猜一下......
在调用new MenuView();
方法之前,您正在home
方法中使用amicizie.fetch
创建新的菜单视图。我的猜测是来自undefined
的{{1}}
来自那个视图。你确定不是这样吗?
尝试注释掉该视图,并在console.log(this.model)
错误处理程序中放置console.log('error')
,以确保在获取模型时没有错误。