2014-08-30 3 views
1

Я пытаюсь вручную перехватить результат Service Variable, который потребляет внешние данные JSON.Служебные переменные события в Wavemaker 7

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

В раскрывающемся списке «Сервисная переменная» есть вкладка «События», но если вы выберете «Javascript» для событий OnSuccess или OnResult (или любого из них на самом деле), это не приведет к созданию заглушки для вас в коде, и я не может для жизни меня разобраться, как поймать эти события.

Пожалуйста, может кто-нибудь указать мне в правильном направлении? Документация не объясняет это (я искал широко). Я опубликую это на досках Wavemaker, а также отправлю ответ, если я получу его тоже.

+0

Вы имеете в виду, что вы не можете сгенерировать функцию JavaScript для события? – tempusfugit

+0

В частности, для событий с переменными обслуживания да. Загружаемая версия (6.7) генерирует заглушки при выборе этих событий в пользовательском интерфейсе, и я пытался воссоздать их вручную, поскольку эта версия не работает. Но я не увенчался успехом. – beigerac

ответ

2

Хорошо, я отработал (в конечном итоге).

Скажите, что ваш веб-сервис называется wsApiCall. IDE создаст служебную переменную для вас, называемую WsApiCallInvoke, и это видно в левой панели «Услуги» в разделе «wm.ServiceVariable»

Щелкните эту служебную переменную, чтобы открыть панель конфигурации, и выберите «События» "вкладки. Выберите «Javascript» для событий, которые вы хотите (в моем случае, onResult).

** Это не создает заглушки в коде как 6.7 делает **

EDIT: Не совсем так. Дальнейшее тестирование показывает, что до тех пор, пока вы меняете владельца из приложения (по умолчанию) на страницу перед сохранением, похоже, что он создает заглушку. Возможно, что параметр «Приложение» создает заглушку в другом месте, но если это так, я еще не нашел его.

EDIT 2: нашел его с помощью форума wavemaker - в панели файлов слева выберите ресурсы из раскрывающегося списка, а под папкой «services» вы найдете app.js. В нем создаются заглушки для широкого спектра приложений.

Вы также должны убедиться, что владелец «Страница» - это не работает, если владелец «Приложение». Если кто-нибудь может прокомментировать, почему это было бы очень полезно.

Так что теперь, создать свой собственный окурок в сценарии для вашей страницы:

Application.$controller("MainPageController", ['$scope', 
function($scope) { 
    "use strict"; 

    ... 

    $scope.WsApiCallInvokeonSuccess = function(variable, data) { 
     // Insert code here. 
    }; 

и, для меня по крайней мере, все это похоже на работу. Объект данных содержит данные json, которые мне нужны.

Надеюсь, это поможет кому-то.

+0

Очень хороший ответ. Я уверен, что это будет полезно. Я думаю, что это связано с объемом вашей переменной (Page vs. App), ничего особенного. – tempusfugit

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