Автоматически обновлять список представления об изменении - Knockoutjs & jQuery Mobile

Я использую Knockoutjs (очень новый к нему) с jQuery Mobile. У меня есть список, к которому я связываю отфильтрованные результаты. После того, как я загрузим свои данные, в первый раз, когда я должен позвонить

$('ul').listview('refresh');

для JQM для Restyle My List, это отлично работает.

Однако, когда я отфильтрую мой список, он повторяется и снова ослабляет стиль, и я не могу выяснить, где снова позвонить в обновление.

Мой HTML выглядит следующим образом:

Filter:

Мой нокаут JS:

var car = function (name, make, year) {
    this.name = name;
    this.make = make;
    this.year = year;
}

var carsViewModel = {
    cars: ko.observableArray([]),
    filter: ko.observable()
};

//filter the items using the filter text
carsViewModel.filteredItems = ko.dependentObservable(function () {
    var filter = this.filter();
    if (!filter) {
        return this.cars();
    } else {
        return ko.utils.arrayFilter(this.cars(), function (item) {
            return item.make == filter;
        });
    }
}, carsViewModel);

function init() {
    carsViewModel.cars.push(new car("car1", "bmw", 2000));
    carsViewModel.cars.push(new car("car2", "bmw", 2000));
    carsViewModel.cars.push(new car("car3", "toyota", 2000));
    carsViewModel.cars.push(new car("car4", "toyota", 2000));
    carsViewModel.cars.push(new car("car5", "toyota", 2000));        
    ko.applyBindings(carsViewModel);
    //refresh the list to reapply the styles
    $('ul').listview('refresh');
}

Я уверен, что есть что-то очень глупуе, что мне не хватает ...

Спасибо за ваше время.

-121--1547821-

Трудно понять поведение распределения памяти Haskell Я наткнулся на Haskell и FP и ошеломлен возможностями. И старая математика ботана внутри меня не было проблем сочинить наивный код для фактических полезных целей. Однако осмотруйте все чтение I ...

Я наткнулся на Haskell и FP и ошеломлен возможностями. И старая математика ботана внутри меня не было проблем сочинить наивный код для фактических полезных целей. Однако осмотруйте все чтение, мне все еще очень трудно понять, как не ударить некоторые удивительные узкие места производительности.

Итак, я пишу очень короткие кусочки кода с наивными реализациями, а затем попробуйте небольшие изменения, чтобы увидеть, как реагирует о производительности. И вот один пример, который я действительно не могу обойтись, чтобы понять ... Я написал эту функцию, которая находит решение задачу Иосифа , специально с реализацией наивных списков.

m = 3
n = 3000
main = putStr $ "Soldier #" ++ (show $ whosLeft [1..n]) ++ " survived...\n"

whosLeft [lucky] = lucky
whosLeft soldiers = whosLeft $ take (length soldiers -1) $ drop m $ cycle soldiers

Последнее проходит в 190 мс, с производительностью 63% по РТС.

Тогда первое, что я хотел попробовать, это удалить (длину солдата -1) и заменить его с помощью уменьшения целочисленного числа.

Время работы подчеркивалось до 900 мс и производительность до 16% и использует в 47 раз больше памяти, чем более простой код выше! Поэтому я добавил строгую оценку, вынудил тип INT, попробовал такие вещи, как удаление глобальных переменных и других, но не намного воспользоваться. И я просто не могу понять это замедление.

m = 3::Int
n = 3000::Int
main = putStr $ "Soldier #" ++ (show $ whosLeft n [1..n]) ++ " survived...\n"

whosLeft 1 [lucky] = lucky
whosLeft n' soldiers = n' `seq` left `seq` whosLeft (n'-1) left
                where left = take (n'-1) $ drop m $ cycle soldiers

Я просеивал статей и постов, связанных с производительностью, но я просто не говорю об этом. Еще быть Haskell Noob, я должен пропустить что-то большие ... Как этот один добавлен параметр (предварительно разжевованные вычисления ...) Сократить скорость так много?

PS: Я знаю, если Джозеф действительно был с 3000 Солдаты, они бы не нуждались в самоубийстве ...

16
задан Mathias Dolidon 12 August 2015 в 07:47
поделиться