При расширении функциональности Knockout, когда это целесообразно использовать пользовательские привязки против расширителей и пользовательских функций с помощью «fn»? Есть ли последствия для производительности при выборе одного над другим?Расширение нокаута с помощью настраиваемых привязок, расширителей или настраиваемых функций
ответ
Обычно вы хотите выбрать настраиваемые привязки, когда выполняемая вами функциональность включает в себя как пользовательский интерфейс, так и ваши данные, поэтому там, где вам нужен доступ к элементу, и обычно некоторые данные позволяют контролировать, что делать с элементом.
На данный момент не существует большой разницы между удлинителями и добавлением к .fn
. Расширители были добавлены в KO немного раньше, чем общие функции были доступны через .fn
.
Обычно это не проблема, но наполнители будут работать как для наблюдаемых, так и для вычисляемых наблюдаемых. Используя .fn
, вам нужно будет добавить функции к ko.subscribable.fn
, чтобы они были доступны обоим. Однако в некоторых случаях ваша функциональность может применяться только к той или иной, поэтому использование ko.observable.fn
и ko.computed.fn
было бы лучшим выбором.
Я считаю, что расширение .fn
является самым чистым синтаксисом. Если вы обязательно вернете this
или новый тип, если вы его обертываете, то вы можете легко поддерживать цепочку. Расширители немного более ясны и гарантируют, что поверхности поверхности API по-прежнему остаются скудными (для чего это стоит).
- 1. Расширение `find_by` с помощью настраиваемых ключей
- 2. QLineEdit и несовместимость настраиваемых функций
- 3. Применение одноразовых привязок к директиве настраиваемых элементов
- 4. создание нескольких настраиваемых функций агрегации
- 5. Получение настраиваемых опций настраиваемых продуктов
- 6. Вызов с помощью настраиваемых аргументов
- 7. Расширение svcutil.exe и wsdl.exe с помощью настраиваемых методов
- 8. PostgreSQL, резервное копирование/восстановление с помощью настраиваемых функций
- 9. список настраиваемых функций, которые могут быть вызваны
- 10. Создание настраиваемых компонентов
- 11. Имеет ли SpreadsheetGear поддержку intellisense для встроенных или настраиваемых функций?
- 12. Выполнение пользовательских настраиваемых функций в JavaScript или jQuery
- 13. Как перенаправить с помощью настраиваемых параметров?
- 14. Редактирование настраиваемых параметров поля с помощью API
- 15. Проверка доступа пользователей с помощью настраиваемых атрибутов
- 16. Обработка ошибок с помощью настраиваемых сообщений?
- 17. Подчеркивание текста с помощью настраиваемых тегов
- 18. Создание настраиваемых регионов с помощью Google Geochart
- 19. joomla несколько настраиваемых полей с помощью xml
- 20. Обтекание существующей задачи с помощью настраиваемых задач
- 21. Инициализировать компоненты с помощью настраиваемых имен
- 22. Сделайте проверку формы с помощью настраиваемых атрибутов
- 23. Редактор для настраиваемых полей
- 24. Реализация настраиваемых адресов пользователя
- 25. Список настраиваемых целых чисел
- 26. Редактор настраиваемых узлов
- 27. WordPress: расширенный поиск настраиваемых типов сообщений и настраиваемых полей
- 28. Настройка настраиваемых свойств управления
- 29. Использование генераторов настраиваемых функций с параметрами в OpenNLP
- 30. SchemaExport с использованием настраиваемых типов
Hi, @RPNiemeyer. Что вы подразумеваете под словом «Расширители», немного более ясными и гарантируют, что поверхности поверхности API по-прежнему остаются скудными (для чего это стоит) ». –
@David - Расширители явно указаны в том, что вам нужно вызвать '.extend' и передать конкретный расширитель и данные. Вы ясно понимаете, что используете расширитель и какой. Кроме того, когда вы обновляете один из объектов .fn, он делает эту функцию доступной для всех экземпляров, что означает, например, что наблюдаемый будет иметь потенциально всевозможные новые методы, основанные на расширении '.fn'. , что может вызвать путаницу (что встроено и что такое расширение?). Даже с учетом сказанного, я всегда предпочитал расширять '.fn' по причинам, упомянутым выше. –