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
为什么当我this.model.get('completed')
获得false
时。
我正在做正确的事情?任何帮助/建议将不胜感激,更进一步。
提前致谢。
答案 0 :(得分:0)
在View:initialize
中,您有默认模型值,然后在几秒钟内ServiceModel.fetch()
已完成请求,并使用{更新了模型值{1}}
从我的角度来看:
1从true
移出DataModel
2以与SupplierService
相同的方式重写SupplierService
3传递DataModel
作为SupplierService
的依赖
4 {in AppVIew
put
AppView:initialize