我有一个相当通用的模型和该模型的集合(见下文),我正在处理作为一系列视图的基础。在几个视图中,选择其中一个模型会生成操作(通过“选择”属性),我需要能够仅在客户端跟踪选择。
但是,在 Backbone 中似乎没有干净的方法可以做到这一点。客户端模型上添加/更改的任何属性都将同步到服务器。更改该属性时我不能使用,因为当事件在该属性上{silent : yes}
触发时,我需要触发我的视图中的更改。change
我想出的唯一方法是save
在Backbone.Model
我的问题:有没有办法让我缺少的只有客户端的属性,或者我的方法在结构上存在一些我没有看到的其他方式的缺陷?
var CSEvent = Backbone.Model.extend({
idAttribute: "_id",
urlRoot : '/api/events',
defaults: {
title : "",
type : "Native",
repeatOrOneTime : "OneTime",
selected : false
}
});
var CSEventCollection = Backbone.Collection.extend({
model: CSEvent,
url: '/api/events',
getSelectedEvent : function() {
return this.find(function(csevent) { return csevent.get('selected') === true; });
},
selectEvent : function(eventId) {
this.deselectEvent();
this.get(eventId).set({selected : true});
},
deselectEvent : function() {
this.getSelectedEvent().set({selected : false});
}
});