在Backbone model.fetch()调用之后无法设置模型属性

时间:2017-03-03 16:25:36

标签: javascript backbone.js

我遇到了很多例子,其中骨干视图就像this.olvInvoiceType.RendererDelegate = delegate (EventArgs re, Graphics g, Rectangle r, object rowObject) { var item = rowObject as MyItem; if (item != null) { //g.FillRectangle(new SolidBrush(this.olvItems.BackColor), r); g.DrawString(item.Name, olvItems.Font, brush, r); } return true; }; 但是无法获得直接返回骨干视图的示例。在下面的代码中,我能够呈现模型属性的默认值并在灰尘模板中显示相同的内容但是当我执行var view1 = Backbone.View.extend( { } )时,在成功函数中我能够在控制台中看到json响应但是无法将获取的值设置为模型属性并呈现新值。做,让我知道我在这里失踪了什么。任何帮助表示赞赏。

model.fetch()

调用上述代码的我的JS代码如下所示。

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

1 个答案:

答案 0 :(得分:0)

我无法理解您尝试使用代码的具体内容,但看起来您并没有正确使用Backbone.View.extend({ ... })。来自the documentation for Backbone.View.extend

  

通过创建自定义视图类开始使用视图。您将要覆盖渲染函数,指定声明性事件,或者可能是View的根元素的tagName,className或id。

[强调我的。]

Backbone.View.extend用于创建自己的Backbone View类,而不是实例化对象。

如果您正在寻找更多信息,我强烈建议您通读Addy Osmani's free e-book, Developing Backbone.js Applications。您可能已经了解了它已经教过的一些内容,但它有一些扩展Backbone Views的好例子,并且在解释使用Backbone.js的其他基础知识方面做得比我在这里做得好得多。