2

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

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)

この時点でどこを向くべきかわからないので、どんな助けでも大歓迎です。

4

1 に答える 1

2

の結果でjs.Proxy( )を作成しようとすると、このエラーが発生します。を使用する場合、は jsの である必要があります。ここで を取得し、それがエラーを取得する理由です。sfdcsforce.connection.query(...)new js.Proxy(f)fjs.Proxyfunctionobject

これが動作するはずのコードです。

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);
}
于 2013-03-27T19:06:28.003 に答える