骨干的范围

时间:2013-07-26 19:10:18

标签: javascript backbone.js

我已经调用了一个视图(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");

    },

2 个答案:

答案 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'),以确保在获取模型时没有错误。