IBM Worklight 6.1 - 成功调用适配器后如何调用 angular.js 的“ng-controller”方法?

Posted

技术标签:

【中文标题】IBM Worklight 6.1 - 成功调用适配器后如何调用 angular.js 的“ng-controller”方法?【英文标题】:IBM Worklight 6.1 - How to call `ng-controller` method of angular.js after a successful adapter invocation? 【发布时间】:2014-03-03 13:06:19 【问题描述】:

IBM worklight适配器成功函数后如何调用angular.js的ng-controller方法?

我正在使用以下功能:

$("#viewCont").bind('click', function () 
    var input = 
        adapter: "sampleAdapters",
        procedure: "GetViewList",
        parameters: [empId]
    ;
    WL.Client.invokeProcedure(input, 
        onSuccess: function viewinAngular($scope, data) 
            demoArray = ["Dynamic Group Header - 1", "Dynamic Group Body - 1", "Dynamic Group Header - 2", "Dynamic Group Body - 2"];
            qtyArr = [];
            for (var i = 0; i < demoArray.length; i++) 
                var dataObject = new Object();
                dataObject.dateLocalForamt = '123456';
                dataObject.statusString = 'canclelled';
                dataObject.reqstNumbaa = '123456789';
                dataObject.Product_Desc = 'asdf';
                dataObject.Quantity = 10;
                qtyArr.push(dataObject);
            

            $scope.data = qtyArr;

        ,
        onFailure: authFailure,
        timeout: 180000
    );


function authFailure(response) 

    WL.SimpleDialog.show("Alert", 'Check your network connectivity.', [
        text: "OK",
        handler: function () 
    ]);

【问题讨论】:

你看过这里吗:***.com/questions/17204562/… 你的代码失败了吗?以什么方式?有错误吗?并且一定要查看@nspeete 的建议答案。 @nspeete:我对此进行了调查,但如果我使用 $http,那么我将得到正确的答案,因为工作灯需要通过适配器调用来请求每个服务。一旦我调用该过程将在回调函数 Onsuccess 中获得输出,我将如何使用 Angular js 在 html 中显示它? @nspeete:我无法得到结果背后的原因是 ng-controller 函数将在 js 加载时执行,但在这里我需要在适配器成功后调用该函数,请尽快帮助解决。 【参考方案1】:

在适配器调用的 onSuccess 回调函数中,您可以执行以下操作:

var scope = angular.element(document.getElementById("exampleDivId")).scope();
scope.$apply(function()

    contact =type:"phone",value: itemAFromAdapterResponse; 
    scope.settings.addContact(contact); //html will update based on ng-controller "setting's" function addContact
    scope.settings.name = itemBFromAdapterResponse; //will update name in html as the response from your adapter invocation

)

【讨论】:

: 很明显我们需要在调用 ng-controller 函数之前调用 bootstrap,谢谢它成功了

以上是关于IBM Worklight 6.1 - 成功调用适配器后如何调用 angular.js 的“ng-controller”方法?的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.1 - 升级到 v6.1 后,iOS 5 中的适配器调用失败

IBM Worklight 6.1 - “Ecma 错误:TypeError:无法调用对象中的属性 <function>”

IBM Worklight 6.1 - 如何在较慢的网络中处理超时?

IBM Worklight 6.1 [收到来自客户端的错误令牌]

IBM Worklight 6.1 - 如何打开 https 链接?

IBM Worklight 6.1 - 无法重新生成 iPhone 本机文件夹