2015-04-06 2 views
1

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

var currentConfig = $('#authenticateCont #btnFormType') 
     .asEventStream('click') 
     .map(function (e) { 
      ... 
     }); 

$('#authenticateCont form') 
     .asEventStream('submit') 
     .combine(currentConfig, function(r, c) { 
      return { 
       response: r, 
       config: c 
      }; 
     }) 
     .onValue(function(e){ 
      ... 
     }); 

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

Должно быть, что когда форма отправлена, она считывает последнее значение из конфигурации. Мне нужно что-то вроде операции «combLeft», которая не хранит последнее событие отправки.

Да ладно .... как это может быть так сложно? Нажмите кнопку, прочитайте значение!

ответ

1

мне нужно что-то вроде эксплуатацию '' combineLeft

Да, есть что-то вроде этого: property .sampledBy (stream). Он получает текущее значение из свойства конфигурации всякий раз, когда вы нажимаете кнопку отправки:

var submit = $('#authenticateCont form').asEventStream('submit'); 
currentConfig.sampledBy(submit, function(c, e) { 
    return {event: e, config: c}; 
}) 
.onValue(function(e) { … }); 
+0

aha ... да, вам нужно немного повернуть его и настроить поток конфигурации, в конечном счете, обрабатывать форму щелчка. –

+0

Я думаю, что моя идея combLeft более интуитивная. –

+0

Похоже, что функция 'map', вызываемая с помощью свойства, не требует, чтобы вы ее развернули, но я не уверен, будет ли/когда значение потока будет доступно. – Bergi

Смежные вопросы