我正在使用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控制台中的完整错误如下所示:
Uncaught TypeError:将循环结构转换为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。 现在一切正常!
答案 0 :(得分: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 选项,因为issue 9283
编辑:您的问题( JSON.stringify无法序列化循环结构)应该从r22598开始消失(参见https://groups.google.com/a/dartlang.org/d/msg/misc/zZ8Sx5rojis/UddCmmnaYTkJ)