2017-03-03 137 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")); 
       } 
      }); 
     } 
    }); 
}); 

我的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我已經改寫了這個問題..希望這有助於理解 –

回答

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的基礎知識方面做得比我在這裏做得更好。