Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript backbone.js模型属性在运行时不可用_Javascript_Ruby On Rails_Backbone.js_Javascript Framework - Fatal编程技术网

Javascript backbone.js模型属性在运行时不可用

Javascript backbone.js模型属性在运行时不可用,javascript,ruby-on-rails,backbone.js,javascript-framework,Javascript,Ruby On Rails,Backbone.js,Javascript Framework,我对这件事已经心力交瘁了 我正在尝试向包含模型对象属性的屏幕渲染视图。我能够获得要渲染的html,但是模型属性没有像预期的那样插入到div中,而是渲染为未定义的 令人沮丧的是,当我将视图对象记录到控制台时,我能够检查它,并看到正确的模型与之关联,并且用户的属性确实通过此>模型>属性存在。但是,如果尝试直接在我的代码中访问属性,然后将其记录到控制台,我会得到未定义的 路由器显示操作 show: function(customer_id){ var customer = new back

我对这件事已经心力交瘁了

我正在尝试向包含模型对象属性的屏幕渲染视图。我能够获得要渲染的html,但是模型属性没有像预期的那样插入到div中,而是渲染为未定义的

令人沮丧的是,当我将视图对象记录到控制台时,我能够检查它,并看到正确的模型与之关联,并且用户的属性确实通过此>模型>属性存在。但是,如果尝试直接在我的代码中访问属性,然后将其记录到控制台,我会得到未定义的

路由器显示操作

show: function(customer_id){
      var customer = new backbone_data.Models.Customer({id: customer_id});
      customer.fetch();
      var customerView = new backbone_data.Views.CustomerView({model: customer});   
      $("#app_container").append(customerView.render().el);
}
视图类中的渲染函数--这两个函数都不起作用

render: function(){
        this.$el.html("<h3>Hello, my age is "+this.model.get('age')+"</h3>");
        return this;
}

template: _.template("<h3>Hello, my age is <%= age %></h3>"),
render: function(){
        this.$el.html(this.template(this.model.attributes));
        return this;
}
render:function(){
this.$el.html(“你好,我的年龄是”+this.model.get('age')+”);
归还这个;
}
模板:u.template(“你好,我的年龄是”),
render:function(){
this.el.html(this.template(this.model.attributes));
归还这个;
}
显示对象属性的控制台图像 我从视图的渲染函数内部记录这些内容,如下所示:

render: function(){
        console.log(this);
        console.log(this.model.attributes.age);
        this.$el.html("<h3>Hello, my age is "+this.model.get('age')+"</h3>");
        return this;
}
render:function(){
console.log(this);
log(this.model.attributes.age);
this.$el.html(“你好,我的年龄是”+this.model.get('age')+”);
归还这个;
}
您可以从屏幕截图中看到,虽然在控制台中记录视图对象时可以访问年龄属性,但在我的代码中直接记录并在视图中呈现为未定义时,年龄属性是未定义的

谢谢你的帮助

customer.fetch()
执行异步请求以填充模型的数据。代码创建视图并在
fetch()
之后立即将其传递给模型。试试这个:

customer.fetch({
    success: function(data)
    {
        var customerView = new backbone_data.Views.CustomerView({model: data});   
        $("#app_container").append(customerView.render().el);
    }
});
这应该等到
fetch()
完成,并确保已检索到所需的数据。

customer.fetch()
执行异步请求以填充模型的数据。代码创建视图并在
fetch()
之后立即将其传递给模型。试试这个:

customer.fetch({
    success: function(data)
    {
        var customerView = new backbone_data.Views.CustomerView({model: data});   
        $("#app_container").append(customerView.render().el);
    }
});

这应该等到
fetch()
完成,并确保已检索到所需的数据。

感谢您的回复。这正是问题所在。有一件事让我大吃一惊,那就是控制台正在显示对象,而对象实际上还没有返回。我应该如何考虑控制台的计时以及它如何显示数据?感谢您的帮助。另一个类似的问题是,在控制台中检查对象会导致认为该对象是从AJAX请求返回的,而实际上并没有@很高兴我能帮上忙。我的方法是在将对象打印到控制台时使用JSON.stringfy(),但即使这样也不完美。我想最重要的是要记住,控制台正在引用当前状态的对象,而不一定是调用console.log()时的状态。我将尝试一下。谢谢你的帮助,谢谢你的回复。这正是问题所在。有一件事让我大吃一惊,那就是控制台正在显示对象,而对象实际上还没有返回。我应该如何考虑控制台的计时以及它如何显示数据?感谢您的帮助。另一个类似的问题是,在控制台中检查对象会导致认为该对象是从AJAX请求返回的,而实际上并没有@很高兴我能帮上忙。我的方法是在将对象打印到控制台时使用JSON.stringfy(),但即使这样也不完美。我想最重要的是要记住,控制台正在引用当前状态的对象,而不一定是调用console.log()时的状态。我将尝试一下。我感谢你的帮助。