1

私がデバッグしようとしている問題は、私のバックボーン ビューで、すべてのモデル属性 (名前、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 属性を除く他のすべての属性に対して「未定義」のエラーを返します。

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

//スキーマ

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

  });

//現在解決済みです。モデルに対して fetch コマンドを実行したのは、render メソッドを呼び出す前ではなく、render メソッドを呼び出した後でしたためです。

これは私のルーターです。ビューが作成された後、ルーターから 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();
});
4

0 に答える 0