2017-03-03 6 views
0

バックボーンビューがvar view1 = Backbone.View.extend({ })のような例がたくさんありますが、バックボーンビューが直接返される場所を得ることはできません。以下のコードでは、モデル属性のデフォルト値をレンダリングしてダストテンプレートに表示することができますが、model.fetch()を実行すると成功関数でコンソールでjson応答を確認できますが、モデル属性に値を取得し、新しい値をレンダリングします。私がここで逃していることを教えてください。どんな助けもありがとうございます。バックボーンmodel.fetch()コールの後でモデル属性を設定できません

define(function (require) { 
    'use strict'; 

    var $ = require('jquery'); 
    var Backbone = require('backbone'); 

    var g = require('global/dust-globals'); 
    var template = require('text!/dust/table1.dust'); 

    var SampleModel = Backbone.Model.extend({ 
     initialize: function() { 
     }, 

     defaults:{ 
      SampleUpdate:'Test date', 
      SampleCount: 0 
     }, 

     urlRoot: "/Sample" 
    }); 

    var obj1 = new SampleModel(); 

    return Backbone.View.extend({ 

     events: { 
      // 'click .search-btn': 'searchBtnClick', 
     }, 

     initialize: function(){ 
     this.testfunc(); 
     this.render(); 
     this.model.on("change", this.render, this); 
    }, 

    render: function() { 
     this.$el.html(g.renderTemplate('TabView', template, {})); 
       //template is compiled and rendered successfully 
       console.log('CHECK:'+obj1.get("lastUpdate")); 
       return this; 
      }, 

      testfunc : function() { 
      obj1.fetch({ 
       success: function (response) { 
        console.log(JSON.stringify(response)); 
        obj1.set("SampleUpdate", response.get("sampleUpdate")); 
        obj1.set("SampleCount", response.get("sampleCount")); 
        console.log('CHECK1:'+obj1.get("SampleUpdate")); 
       } 
      }); 
     } 
    }); 
}); 

上記のコードを呼び出すMy JSコードは次のようになります。

var TabView = require('/SampleTab'); 

    return Backbone.View.extend({ 

     initialize: function() { 
      this.tabView = new TabView({el: '#sample-div', model:this.model, appView: this}); 
      this.render(); 
     }, 

     render: function() { 
      this.tabView.$el.show(); 
      this.tabView.render(); 
     } 
    }); 
+0

あなたの質問を書き直すことを検討してください、それは明確ではありません – mikeapr4

+0

@ mikeapr4私は質問をrewordedしました..これは理解するのに役立ちます –

答えて

0

私はそれはあなたがあなたのコードでやろうとしているです正確に何を理解トラブルを抱えているが、あなたは正しくBackbone.View.extend({ ... })を使用しているようにそれは見えません。 the documentation for Backbone.View.extendから:

は、カスタムビュークラスを作成ことにより、ビューを使ってみましょう。レンダリング関数をオーバーライドし、宣言イベントを指定し、おそらくはViewのルート要素のtagName、className、またはidを指定する必要があります。

[重点鉱山。]

Backbone.View.extendは、オブジェクトをインスタンス化していない、あなた自身のバックボーンビュークラスを作成するためです。

詳細情報をお探しの場合は、Addy Osmani's free e-book, Developing Backbone.js Applicationsを読むことを強くお勧めします。既に教えていることのいくつかを知っているかもしれませんが、Backbone Viewsを拡張する良い例があり、私がここでできるよりもBackbone.jsを使用するための他の基本を説明するのがはるかに優れています。

関連する問題