渲染视图后正在获取模型数据
model data is fetching after rending the view
我有一个模型和视图,其中在模型获取数据之前渲染视图。当我签入数据库时,当我在视图中进行更改时,该值会持久保存到数据库中。但是在渲染视图时我无法通过 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());
您似乎不小心在 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 */
});
我有一个模型和视图,其中在模型获取数据之前渲染视图。当我签入数据库时,当我在视图中进行更改时,该值会持久保存到数据库中。但是在渲染视图时我无法通过 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());
您似乎不小心在 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 */
});