JS-Interop:尝试使用salesforce代理

时间:2013-03-27 16:18:16

标签: dart

我正在尝试使用Salesforce的sforce库向salesforce发出Ajax调用。以下是正在运行的示例javascript:

function setupPage() {

    var state = { //state that you need when the callback is called
        output : document.getElementById("output"),
        startTime : new Date().getTime()};

    var callback = {
        //call layoutResult if the request is successful
        onSuccess: layoutResults,
        //call queryFailed if the api request fails
        onFailure: queryFailed,
        source: state};

    sforce.connection.query(
            "Select Id, Name, Industry From Account order by Industry",
            callback);
}
function queryFailed(error, source) {
    // not shown function code
}

function layoutResults(queryResult, source) {
   // not shown function code
}

这是我的飞镖实施:

import 'dart:html';
import 'package:js/js.dart' as js;
import 'dart:json';

void main() {

  js.scoped(() {

    var sforce = js.context.sforce;

    var callbackSuccess = new js.Callback.once(success);
    var callbackFailed = new js.Callback.once(failure);

    var sfdc = new js.Proxy(sforce.connection.query("Select Id, Name, Industry From Account order by Industry"),
        js.map({"onSuccess" : callbackSuccess, "onFailure" : callbackFailed}));    

  });
}

void success(queryResult) {
  print("queryResult is: " + queryResult);
}

void failure(error) {
  print("error is: " + error);
}

正在放置Ajax调用,因为我看到正在发出POST请求并返回数据。但是,我似乎总是得到这个错误(我尝试了无数种不同的组合):

Uncaught TypeError: object is not a function (program):370
construct (program):370
ReceivePortSync.dispatchCall darttest:178
$$._JsSendPortSync.callSync$1 minidartjs:4929
$.Proxy_Proxy$withArgList minidartjs:8194
$.Proxy_Proxy minidartjs:8183
$$.main_anon.call$0 minidartjs:6057
$.scoped minidartjs:8136
$.main minidartjs:8066
$$._IsolateContext.eval$1 minidartjs:276
$.startRootIsolate minidartjs:6533
(anonymous function)

我们非常感谢任何帮助,因为我不知道在这一点上转向何处。

1 个答案:

答案 0 :(得分:2)

您收到此错误是因为您尝试使用js.Proxy的结果创建sfdcsforce.connection.query(...))。当您使用new js.Proxy(f)时,f必须是js js.Proxy的{​​{1}}。在这里你得到一个function,这就是你得到错误的原因。

这是应该有用的代码。

object