【问题标题】:Trying to understand backbone initialization of models and collections试图理解模型和集合的主干初始化
【发布时间】:2015-07-23 08:02:18
【问题描述】:

我有一组模型,其中一个字段可能为空。在这种情况下,我想在列表视图中显示“无”。但是,如果该字段不为空,我想显示它的内容。这是我的代码。

我的模特:

App.Models.EventType = App.Helpers.Model.extend(
  {
    initialize: function(){
      console.log('model init');
      this.set('etcName', this.get('etcName') === null ? 'none':this.get('etcName'));
    },
    url       : function(){
      if(_.isUndefined(this.id)){
        return '/api/event_types_controller/event_type';
      }
       return '/api/event_types_controller/event_type/' + this.id;
    }
  });

我的收藏:

App.Collections.EventTypes = App.Helpers.Collection.extend(
  {
    initialize: function(){
      console.log('collection init');
    },
    url      : '/api/event_types_controller/get_event_types',
    model    : App.Models.EventType,
    sortOrder: 'asc',
    sortBy   : 'eventTypeName'
  }
);

这适用于列表视图。我在控制台中看到从服务器检索数据,然后为检索到的每条记录运行模型初始化代码。以下是返回的 JSON 示例:

{"eventTypeID":35,"eventTypeName":"DEPO","description":"","instructions":"","lawyersOnly":0,"eventTypeCategoryID":3,"lockedType":1,"etcName":"Deposition"},
{"eventTypeID":34,"eventTypeName":"DENY","description":"Denial","instructions":"","lawyersOnly":0,"eventTypeCategoryID":0,"lockedType":0,"etcName":null}

但是,现在我需要加载单个记录。我知道我可以在 fetch 中设置一个 success: function() 但在数据加载初始化之前/之后,正确的功能似乎是一致的。没有?

从我的路由器:

eventTypesSettingsEdit: function(id){
  var eventTypeEditModel = new App.Models.EventType({id: id});
  var eventTypeContent = new App.Views.Settings.EditEventType({model: eventTypeEditModel});
  App.Helpers.htmlView(eventTypeContent, '#content');
  eventTypeEditModel.fetch();
},

在这种情况下,模型的初始化代码在数据加载之前执行。这对我来说似乎不一致。坦率地说,我希望 init 代码在包括获取数据在内的任何操作之前运行,并且应该有某种可以操作数据的获取后初始化。

谁能指出如何正确处理需要为列表和编辑视图修改传入数据的情况?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    您应该在模型上使用#parse。仅在从服务器获取时调用。

    http://backbonejs.org/#Model-parse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      相关资源
      最近更新 更多