Как мне установить переменную сущности со значением внутри emit - PullRequest
2 голосов
/ 21 сентября 2011

Я извлекаю значение в переданном блоке кода, для которого я хотел бы установить переменную объекта.Вот что я пытаюсь сделать:

rule read_form {
    select when web submit "#loginForm"
    pre {
    }
    {
        emit <|
            function myFunction() {
                var myValue = 10;
            }
            myFunction();
        |>;
    }
    fired {
        set ent:myValue myValue;
    }
}

1 Ответ

3 голосов
/ 21 сентября 2011

То, как вы создали эту архитектуру, не сработает.

И вот почему:

Оператор select и предварительный блок оцениваются на сервере Kynetx при первом поступлении запроса на событие. Если оператор select оценивается как true, то правило вернет JavaScript-код emit в HTTP-ответе на возникшее событие, которое пришло в сервер Kynetx. До того, как этот HTTP-ответ отправляется обратно в браузер с сервера Kynetx, оператор posted в postlude будет выполнен, если у вас есть событие, которое будет возвращено в HTTP-ответе. Это означает, что оператор выбора, блоки pre block и postlude оцениваются и выполняются на сервере Kynetx до того, как JavaScript возвращается в браузер. Так что я думаю, что короткий ответ заключается в том, что postlude не имеет представления о значении myValue, поскольку область действия очень различна (разные машины).

Надеюсь, это поможет. Я, вероятно, должен сделать диаграмму, объясняющую это немного лучше, но у меня есть некоторая критическая работа, которую я должен сделать сегодня вечером. В зависимости от вашего ответа я могу вернуться к этому вопросу и ответить на него позже.

Итак, как вы могли бы сделать эту работу? Вы могли бы выполнить то, что, как мне кажется, я понимаю, вы пытаетесь сделать, подняв еще одно событие в вашем излучаемом блоке javascript, передав нужное значение. Это будет означать, что значение будет доступно в предварительном блоке и блоке postlude правила, которое получает возбужденное событие, чтобы вы могли сохранить его в переменной объекта.

Вы также можете посмотреть этот пост в блоге, посвященный повышению событий из JavaScript, который может помочь пролить свет на эту тему http://kynetxappaday.wordpress.com/2010/12/16/day-8-raise-web-events-from-javascript/

...