2017-03-03 91 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的基础知识方面做得比我在这里做得更好。