gpt4 book ai didi

backbone.js - Backbone 中仅客户端属性

转载 作者:行者123 更新时间:2023-12-04 18:11:59 26 4
gpt4 key购买 nike

我有一个相当通用的模型,并且正在收集该模型(请参见下文),作为一系列观点的基础。在几种 View 上,选择一个模型会生成操作(通过“selected”属性),我需要能够仅在客户端跟踪选择。

但是,似乎在Backbone中没有干净的方法可以做到这一点。在客户端模型上添加/更改的所有属性都将同步到服务器。更改属性时无法使用{silent : yes},因为当change事件在该属性上触发时,我需要触发 View 中的更改。我想出的唯一方法是覆盖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});
}
});

最佳答案

尝试覆盖Model.toJSON()方法,正如您在Backbone Model code中看到的那样,该方法不是很复杂。官方文档还建议在有特殊需要时将其覆盖。

尝试这样的事情:

var CSEvent = Backbone.Model.extend({
toJSON: function(){
return _.clone( _.pick( this.attributes, "title", "type", "repeatOrOneTime" ) );
}
});

关于backbone.js - Backbone 中仅客户端属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com