Только атрибуты стороны клиента -в магистрали

У меня есть довольно общая модель и коллекция этой модели (, см. ниже ), с которой я имею дело как с основой для ряда представлений. В некоторых представлениях выбор одной из моделей генерирует действия (через атрибут «выбрано» ), и мне нужно иметь возможность отслеживать выбор только на стороне клиента.

Однако похоже, что в 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});
        }
    });
5
задан Dave 13 August 2012 в 19:30
поделиться