dart - JS-互操作 : Attempting to use salesforce proxy

标签 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
}

这是我的 dart 实现:

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)

任何帮助将不胜感激,因为我现在不知道该转向哪里。

最佳答案

您收到此错误是因为您尝试使用 sforce.connection.query(...) 的结果创建 js.Proxy (sfdc) 。当您使用 new js.Proxy(f) 时,f 必须是 js functionjs.Proxy 。这里你得到一个对象,这就是你得到错误的原因。

这是应该可以工作的代码。

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);

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

  });
}

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

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

关于dart - JS-互操作 : Attempting to use salesforce proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663869/

相关文章:

flutter - Future Builder 不是在 build

flutter - 为什么 Visual Studio Code 中的代码文本没有颜色?

flutter - Flutter:在小部件调用(图标)中使用参数

list - 无法在 flutter 中使用 socket.io 数据更新 ListView ?

flutter - 如何将 Flutter 中的一个小部件与另一个小部件叠加,不透明度设置为相乘?

dart - 我是否有义务使用 Stateful Widgets 来配置 Flutter 中的流 Controller ?

Flutter 旋转部件

javascript - Node.js 中的套接字与 Dart 中的套接字

dart - 在Dart中使用JSON参数调用Chromecast Receiver Library的JavaScript函数

Flutter:如何使用 onTap 或 onPressed 滚动页面