我有一个模型和视图,在模型获取数据之前渲染视图。当我在DB中签入时,当我在视图中进行更改时,该值将持久保存到DB。但是在视图渲染时,我无法通过model.fetch()获取值。
define([
"marionette",
"monet",
"modules/fetchParams/collections/fetchParamsListLevels",
"modules/fetchParams/views/fetchParamsLayoutView",
"modules/fetchParams/models/fetchParam"
], function(Marionette, Monet, fetchParamListLevels, FetchParamsLayoutView,FetchParamModel){
return Marionette.Module.extend({
model:"",
onStart:function(){
this.model =new FetchParamModel();
},
displayInRegionMarketParams:function(region){
this.fetchModel("market");
region.show(new FetchParamsLayoutView({model: this.model, title: " Market"}));
},
displayInRegionShareParams:function(region){
this.fetchModel("shares");
region.show(new FetchParamsLayoutView({model: this.model, title: "Shares"}));
},
.
.
.
fetchModel:function(type){
this.model.setType(type);
this.model.fetch();
}
我尝试如下,但无法找到解决方案。让我知道我在这里缺少什么。
this.listenTo(this.model, "change", this.render());
答案 0 :(得分:0)
您似乎意外地在this.render
回调中添加了括号。回调的关键是它会为你调用,所以你不必这样做。所以你把它没有括号传递给事件监听器,它会为你运行它。
您的代码将以这种方式工作:
this.listenTo(this.model, "change", this.render);
此外,如果您希望在数据来自服务器之后执行任何操作,您可以使用从fetch()
方法返回的承诺:
this.model.fetch().done(function(data, status, xhr){
console.log( data, status, xhr );
/** update the view maybe */
});