无法从模板访问所有骨干模型属性

时间:2013-06-30 00:57:21

标签: backbone.js

我试图调试的问题是,在我的骨干视图中,所有模型属性(名称,ID,电子邮件等)都可用,(我有console.log()模型属性来验证这一点),但是,当我渲染通过模型的视图时,模板中只有name属性可用,所有其他属性都是未定义的,请问我有什么遗漏,因为这是我的第一个主干应用程序,我花了好几个小时尝试调试这个并且已经通过网上的许多导师,我的代码似乎是正确的,谢谢

// Backbone视图方法(我已经验证,所有模型值都在这里可用)

var profileView=Backbone.View.extend({
    el:$('#content'),

    initialize:function(){
      this.model.bind('change',this.render,this);
    },

    render:function(){

        var self=this;

        this.$el.html(_.template(profileTemplate,this.model.toJSON()));
    }
});

// HTML TEMPLATE(profileTemplate),模板中只有name属性可用,//浏览器为除name属性之外的所有其他属性提供'undefined'错误

<h1><%=name.first%> <%=name.last%> </h1>//displays correctly
<%=email%> //undefined

// SCHEMA

 var AccountSchema=new mongoose.Schema({
    email:{type:String,unique:true},
    password:{type:String},
    name:{
        first:{type:String},
        last:{type:String},
      full:{type:String}
    },

  });

//现在已经解决了,发生这种情况是因为我在调用render方法之后而不是在调用render方法之前在模型上执行了fetch命令

这是我的路由器,我在创建视图后从路由器调用model.fetch()。当我在渲染之前

之前调用model.fetch()时,问题就停止了
define([''views/profile''],function(,ProfileView){

  var router = Backbone.Router.extend({
    currentView: null, 

    socketEvents: _.extend({}, Backbone.Events),

    routes: {
      'addcontact': 'addcontact',
      'index': 'index',
      'login': 'login',
      'register': 'register',
      'forgotpassword': 'forgotpassword',
      'profile/:id': 'profile',
      'contacts/:id': 'contacts',
       "upload/:id":"upload"
    },
    profile: function(id) {
      var model = new Account({id:id});
      console.log('profile user:'+id);
      this.changeView(new ProfileView({model:model})); //View is created here
      model.fetch(); // model is fetched after view is rendered, cause for the problem in my case
    }
  });

  return new router();
});

0 个答案:

没有答案