1

我使用 Parse.com 作为我的服务器解决方案。我正在我的 dart.html 标题部分加载他们的 framework.js。

首先,一切(CRUD)在 Dartium 中运行良好。现在我的目标是让它也可以编译成 javascript。

我需要做的第一件事是使登录工作。用于初始化和登录的 Parse JS 如下:

Parse.initialize("appid", "appkey");

Parse.User.logIn("myname", "mypass", {
  success: function(user) {
    // Do stuff after successful login.
  },
  error: function(user, error) {
    // The login failed. Check error to see why.
  }
});

这是我在 Dart 中的最新尝试。我没有使用缩小选项运行。

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

void main() {

  js.context.Parse.initialize("appid", "appkey");

  js.context.Parse.User.logIn("myname","mypass", js.map({
    "success": new js.Callback.once((user){
      print("success");
    }),
    "error": new js.Callback.once((user, error){
      print("error");
    }),
  }));
}

它在 Dartium 中运行良好并打印“成功”。

编译为 javascript 时,我在 Safari 中收到此错误:JSON.stringify 无法序列化循环结构。

Google Chrome 控制台中的完整错误如下所示:

未捕获的类型错误:将循环结构转换为 JSON js.dart:1043
$.Proxy__forward js.dart:1043
$$.Proxy.noSuchMethod$1 js.dart:1033(匿名函数)
$.main tabort.dart:21
$.main0 tabort。 html_bootstrap.dart:8
$$._IsolateContext.eval$1 isolate_helper.dart:265
$.startRootIsolate isolate_helper.dart:89 (匿名函数)
tabort.html_bootstrap.dart.js:13949

帮助,或指出我正确的方向将不胜感激!

编辑:下载最新的连续版本:0.1.2_r22610。现在一切正常!

4

1 回答 1

2

这段JS代码对应的Dart代码:

Parse.User.logIn("myname", "mypass", {
  success: function(user) {
    // Do stuff after successful login.
  },
  error: function(user, error) {
    // The login failed. Check error to see why.
  }
});

是 :

js.context.Parse.User.logIn("myname", "mypass", js.map({
  'success': new js.Callback.once((user) {
    // Do stuff after successful login.
  }),
  'error': new js.Callback.once((user, error) {
    // The login failed. Check error to see why.
  })
}));

如果您将Dart代码编译为JS,请不要使用--minify选项,因为问题 9283

编辑:您的问题(JSON.stringify 无法序列化循环结构)应该从 r22598 开始消失(请参阅https://groups.google.com/a/dartlang.org/d/msg/misc/zZ8Sx5rojis/UddCmmnaYTkJ

于 2013-05-10T11:53:42.300 回答