1

我调用了一个视图(menuview),将它传递给了一个 var(prova),但从视图中调用它的结果是未定义的(console.log(this.model),在 menuview 中)。有人可以帮我找出错误吗?

路由器

      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) {

    }
    }); 

菜单视图

       var MenuView = Backbone.View.extend({

    el: $("#menu_container"),

    events: {

    },

    template: Handlebars.compile(template),

    initialize: function () {
        console.log(this.model);<<<------------


    this.render();
        console.log("menuview");

    },
4

2 回答 2

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

所以它在第一种情况下记录未定义。

于 2013-07-26T19:37:34.400 回答
1

我来这里猜一猜……

在调用方法之前,您new MenuView();正在方法中创建一个新的菜单视图。我的猜测是你的from是从那个角度来看的。你确定不是这样吗? homeamicizie.fetchundefinedconsole.log(this.model)

尝试注释掉该视图并console.log('error')在您的amicizie.fetch错误处理程序中添加一个以确保在获取模型时没有错误。

于 2013-07-26T19:24:05.313 回答