[英]Get the changed “this.model” attribute value
一個Backbone.js noob問題。 目前正在使用的代碼如下所示
我的數據模型模型:
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
為什么當我this.model.get('completed')
我得到false
。
我在做正確的事情? 任何幫助/建議將不勝感激,以走得更遠。
提前致謝。
在View:initialize
您獲得了默認模型值,然后在幾秒鍾內ServiceModel.fetch()
完成了請求並使用true
更新了模型值
依我看來:
1從SupplierService
移出DataModel
2以與DataModel
相同的方式重寫SupplierService
3傳遞SupplierService
作為對AppVIew
依賴
AppView:initialize
4 AppView:initialize
放置
serviceModel = new ServiceModel();
supplierService = new SupplierService();
serviceModel.fetch().done(function() {
var data = serviceModel.toJSON();
supplierService.figures.calculate(data)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.