Javascript “换衣服”;这是一个“模型”;属性值
一个主干的问题。我目前使用的代码如下所示 我的数据模型:Javascript “换衣服”;这是一个“模型”;属性值,javascript,backbone.js,backbone-views,backbone-model,Javascript,Backbone.js,Backbone Views,Backbone Model,一个主干的问题。我目前使用的代码如下所示 我的数据模型: define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) { var DataModel = Backbone.Model.extend({ // Defaults attribute values defaults : { completed : false, },
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
。这就是我打印此.model时的外观
为什么当我这个.model.get('completed')
我得到false
我在做正确的事情??如有任何帮助/建议,将不胜感激
提前感谢。在
视图中:初始化
您已获得默认模型值,然后在几秒钟内ServiceModel.fetch()
已完成请求并使用true更新模型值
从我的角度来看:1从供应商服务中移出数据模型 2以与数据模型相同的方式重写供应商服务 3将
SupplierService
作为依赖项传递给AppVIew
4在
AppView中:初始化put
serviceModel = new ServiceModel();
supplierService = new SupplierService();
serviceModel.fetch().done(function() {
var data = serviceModel.toJSON();
supplierService.figures.calculate(data)
});