获取更改的“this.model”属性值

时间:2014-06-20 13:35:35

标签: javascript backbone.js backbone-views backbone-model

Backbone.js noob问题。我正在使用的代码目前看起来像这样

我的DataModel模型:

define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
    var DataModel = Backbone.Model.extend({
        // Defaults attribute values
        defaults : {
            completed : false,
        },
        url : 'path/to/my/data.json',
    });
    return DataModel;
});

我还有另一个名为ServiceModel的模型,它是DataModel的一个实例,看起来像这样

define(['jquery', 'underscore', 'backbone', '../models/DataModel'], function($, _, Backbone, DataModel) {

    // SupplierService as an Object Literal.
    SupplierService = {};

    // Instatiate the DataModel()
    var ServiceModel = new DataModel();
    var that = ServiceModel;

    ServiceModel.fetch().done(function() {
        data = ServiceModel.toJSON();

        SupplierService.figures.calculate(data)
    });

    SupplierService.figures = (function() {
        // I set completed to true here
        function constructor(d) {
        // some work done here
            that.set({
                completed : true,
            });
        }

        return {
            calculate : function(d) {
                constructor(d)
            },
        }
    })();

    return ServiceModel;
});

我的观点:

define(['jquery', 'underscore', 'backbone', '../../models/ServiceModel'], function($, _, Backbone, ServiceModel) {
    var AppVIew = Backbone.View.extend({
        model : ServiceModel,
        initialize : function() {
            console.log(this.model.get('completed'));
        },
    });
    return AppVIew;
});



我的输出打印false而非true。这就是我打印this.model

时的样子

enter image description here

为什么当我this.model.get('completed')获得false时。

我正在做正确的事情?任何帮助/建议将不胜感激,更进一步。

提前致谢。

1 个答案:

答案 0 :(得分:0)

View:initialize中,您有默认模型值,然后在几秒钟内ServiceModel.fetch() 已完成请求,并使用{更新了模型值{1}}

从我的角度来看:
1从true移出DataModel 2以与SupplierService相同的方式重写SupplierService 3传递DataModel作为SupplierService的依赖 4 {in AppVIew put

AppView:initialize