Pull to refresh

Comments 12

Спасибо, это намного лучше.
Видел, не понравилось.
Это вариант с observable полем template — биндинг происходит дважды: сначала на заглушку вроде «loading...», а когда уж придет ответ с сервера, на настоящий шаблон. Заглушка мигает на полсекунды, лишний шаблон и не очень красиво. Зато из коробки работают foreach, with, if биндинги.
Видел, не понравилось.

А мне очень даже )

Это вариант с observable полем template

Склонна полагать, что здесь вы имеете в виду свойство биндинга name.
Коли так, то observабельное имя шаблона это круто, потому что во view-модели можно просто взять и поменять имя шаблона, получив обновление UI безвозмездно, то есть даром.

биндинг происходит дважды

Биндинг дважды происходить не может, а вот обратный вызов afterRender таки да.
Опять же, я считаю это преимуществом, нежели недостатком, потому что
1) можно вставить свою заглушку
2) мигание дефолтной заглушки устраняется одним-единственным CSS-правилом для селектора .infuser-loading.
Склонна полагать, что здесь вы имеете в виду свойство биндинга name

Нет, не имею.
Открываем либу. В 16-й строчке:
self.template = ko.observable(/*всякоетам*/)

Его я и имею ввиду. Ниже в 57-ой строчке:
self.template(tmpl);

Отсюда и второй проход applyBindingsToNodeDescendants, и соответственно afterRender колбек. Это я считаю лишним поведением.
А мне очень даже )

На вкус и цвет фломастеры разные.
(/*всякоетам*/)

А, так вот вы про что.

Тогда ваша проблема решается ещё проще: infuser.defaults.useLoadingTemplate = false.

Отсюда и второй проход

Некритично, я считаю, бо в заглушке биндить нечего, оверхед ничтожно мал.
На всякий случай напомню что писать setTimeout(«somecode in brackets») — моветон, так как по сути это eval.
и? может надо думать, а не тупо следовать рекомендациям? В данном случае ничего страшного не случится и не может случиться, а запись короче. Разве что какой-то нуб увидит это и станет везде его так использовать.

Впрочем автор недалеко ушел- там setTimeout вообще не нужен.
И нужно добавить init и вернуть из него { controlsDescendantBindings: true }. Кроме того, если в шаблоне будет:
  <div> ... </div>
  <div> ... </div>

Т.е. не один корневой элемент, то биндинги применятся только к первому.
Короче — надо читать статью из первого комментария.
Тю а где я в комментарии призываю бездумно следовать мануалу?

Я за то что бы весь код был хорош. Особенно примеры в статьях. Да я дотошный.
Да я боюсь за «нубов» которые прочитают статью и подумают что «иногда так можно делать».

image
Я же просил вчитаться :-). each не нужен — есть встроенная функция для этой задачи.
...
$(result).appendTo(element);
ko.applyBindingsToDescendants(bindingContext, element);
...
Sign up to leave a comment.

Articles