Сброс макета изотопов и нокаута

У меня возникают трудности со сбросом/обновлением/перезагрузкой представления Isotope на основе модели Knockout. Я расширил более раннюю скрипку, чтобы удалить и заменить элементы, но она ненадежна и нарушает сортировку.

    self.reset = function () {
        // Remove all services
        $.each(self.services(), function (index, value) {
            var serviceToDelete = self.services()[0]
            self.removeService(serviceToDelete);
        })

        // Add some back
        self.services.push(new Service('some service', 'and this is a description', 7, '01/01/2000'));
        self.services.push(new Service('another service', 'just another description', 2, '02/01/2000'));
        self.services.push(new Service('driving school', 'learn to drive', 4, '10/01/2000'));
        self.services.push(new Service('ice cream sunday', 'sweet cold and delicious', 3, '01/01/2002'));
        self.services.push(new Service('tootie fruity', 'a rootie', 6, '01/01/2003'));
        self.services.push(new Service('hand gliding', 'you can see your house from here', 5, '01/01/2012'));
        self.services.push(new Service('turkey dinner', 'is not just for thanksgiving', 1, '01/01/2011'));                
    }

Я расширил следующий jsfiddle с помощью кнопки «Сброс», которая просто удаляет все элементы из наблюдаемого массива и считывает их один за другим.

http://jsfiddle.net/8uxKF/2/

  1. Он полностью терпит неудачу в IE10. Панель запуска fiddles даже не загружается.

  2. Частично работает в Chrome, но после сброса консоли выдает ошибку всякий раз, когда инициируется сортировка:

    Uncaught TypeError: объект # не имеет метода sortBy

  3. В FF работает с той же ошибкой, что и в хроме. (но в моем приложении не удается отсортировать)

Кто-нибудь может помочь? Мне нужно, чтобы сортировка работала после сброса. Я не уверен, что это «лучший» способ сброса, поскольку он, похоже, вызывает проблемы.


person Paul Cook    schedule 20.10.2012    source источник


Ответы (2)


self не имеет функции/свойства с именем sortBy() (и не имеет sortDir()). Ваше serviceAdded "событие" пытается вызвать эти несуществующие свойства, отсюда и сбой.

Мне не ясно, что именно вы должны делать, ваш код повсюду. Возможно, вам следовало добавить эти наблюдаемые в вашу модель представления?

function ViewModel() {
    var self = this;
    // ...
    self.sortBy = ko.observable('name');
    self.sortDir = ko.observable('ascending');
}
person Jeff Mercado    schedule 21.10.2012

Я просмотрел код, и он в порядке, за исключением одной ошибки в sortByID, которую я исправил.

Разочаровывает и смущает то, что jsFiddle блокирует один из ресурсов из-за несоответствия MIME-типа при обслуживании с GitHub. Просто чтобы прояснить, это была проблема с запуском внешних скриптов из GitHub в jsFiddle.

Окончательный код размещен на jsfiddle.net/8uxKF/3 для справки.

person Paul Cook    schedule 22.10.2012