在渲染视图后获取模型数据

时间:2015-11-08 15:14:29

标签: backbone.js marionette

我有一个模型和视图,在模型获取数据之前渲染视图。当我在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()); 

1 个答案:

答案 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 */
});