У меня есть другая реализация кросс-компонентной связи здесь http://jsfiddle.net/c641oog2/, чем то, что описано здесь: http://lhorie.github.io/mithril/components.html#librarization. Цель состоит в том, чтобы создать легко интегрируемые & масштабируемые (для повторного использования в других компонентах) компоненты, то есть библиотеку.Mithril js - схема связи между компонентами связи
Основные части моего кода:
var autocompleter = function(options) {
...
autocompleter.vm = {
list: m.prop(options.list || []),
observers: m.prop(options.observers || []),
...
select: function(item) {
for(observer in autocompleter.vm.observers()) {
autocompleter.vm.observers()[observer](item); //notify all observers of selection
}
}
//initialization later on...
this.userAC = new autocompleter({list: this.users(), observers: [this.selectedUser]})
Основное различие заключается в том, как компоненты взаимодействуют друг с другом. В моей реализации я решил использовать наблюдателей, и в реализации документации он реализовал путем создания чистых функций, которые затем используются в функции «вид» на панели мониторинга, где правильные аргументы передаются функции «просмотра» автозаполнения функция.
Мои вопросы:
- Если бы вам пришлось выбирать между этими двумя реализации, почему вы выбираете один над другим?
- В модели функционального программирования есть концепция ООП, такая как шаблон наблюдателя, нахмурившийся?
- Есть ли более тонкий, но масштабируемый способ реализации этого в FP/с использованием другого шаблона?