1

我正在尝试手动拦截使用外部 JSON 数据的服务变量的结果。

我可以绑定一个按钮来调用 API 并将生成的 json 数据绑定到网格,并且效果很好,但是我想在手动填充网格之前预处理一些数据。

服务变量弹出窗口有一个事件选项卡,但如果您为 OnSuccess 或 OnResult 事件(或其中任何一个事件)选择“Javascript”,它不会在代码中为您生成存根,而且我终生无法我想出如何捕捉这些事件。

请有人能指出我正确的方向吗?该文档没有解释这一点(我已经广泛搜索)。我也会将这个发布在 Wavemaker 板上,如果我也得到答案,我也会交叉发布答案。

4

1 回答 1

2

好的,我解决了(最终)。

假设您的 Web 服务称为 wsApiCall。IDE 将为您创建一个名为 WsApiCallInvoke 的服务变量,这在左侧“服务”面板中的“wm.ServiceVariable”下可见

单击此服务变量以调出配置面板,然后选择“事件”选项卡。为您想要的事件选择“Javascript”(在我的例子中,onResult)。

** 这不会像 6.7 那样在代码中创建存根 **

编辑:不完全正确。进一步的测试表明,只要您在保存之前将所有者从应用程序(默认)更改为页面,那么看起来它确实创建了存根。应用程序设置可能会在其他地方创建存根,但如果确实如此,我还没有找到它。

编辑2:在wavemaker论坛的帮助下找到它:) - 在左侧的文件面板中,从下拉列表中选择资源,然后在“服务”文件夹下找到app.js。在那里为应用程序范围的事件创建存根。

您还必须确保所有者是“页面” - 如果所有者是“应用程序”,这似乎不起作用。如果有人可以评论为什么这将是最有用的。

所以现在,在你的页面的脚本中创建你自己的存根:

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

    ...

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

而且,至少对我来说,这一切似乎都奏效了。数据对象包含我需要的 json 数据。

希望这可以帮助某人。

于 2014-09-24T17:17:01.157 回答