【发布时间】: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