index.html
<!doctype html>
<html>
<head>
</head>
<script>
var Apple = function(type) {
this.type = type;
this.color = "red";
};
Apple.prototype.getInfo = function() {
return this.color + ' ' + this.type + ' apple';
};
</script>
<body>
<script type="application/dart" src="index.dart"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
index.dart
import 'dart:js' as js;
import 'dart:html' as dom;
import 'package:js/js.dart';
main() {
// this works fine
var apple = new js.JsObject(js.context['Apple'], ['Macintosh']);
print(apple.callMethod('getInfo', []));
print(new Apple().getInfo());
}
@Js() // about to being changed to @JS
class Apple {
external String get type;
external set type(String type);
external String get color;
external set color(String color);
external factory Apple(String type);
}
只是将@Js()
注释结果添加到
例外:'dart:js':Failed断言:第393行:'p.isNamed‘不是真。观察http://127.0.0.1:35293/内部错误: Dart_Invoke期望加载库参数“目标”。
Update移除external factory Apple(String type);
修复了异常。
现在我得到了
天文台在http://127.0.0.1:38029/收听 红麦金塔苹果 例外:类'Apple‘没有实例方法'getInfo’。 NoSuchMethodError:未找到的方法:'getInfo‘ 接收器:“苹果”的例子 论点:..。 Apple.getInfo main
发布于 2015-10-16 12:10:12
类需要构造函数delcaration,但不需要factory
。
有了这个JS
<script>
var Apple = function(type) {
this.type = type;
this.color = "red";
this.getInfo2 = function() {
return this.color + ' ' + this.type + ' apple';
};
};
Apple.prototype.getInfo = function() {
return this.color + ' ' + this.type + ' apple';
};
</script>
而这个Dart密码
main() {
var apple = new js.JsObject(js.context['Apple'], ['Macintosh']);
print(apple.callMethod('getInfo', []));
print(new Apple('Macintosh').type);
print(new Apple('Macintosh').getInfo2());
print(new Apple('Macintosh').getInfo());
}
@Js() // about to being changed to @JS
class Apple {
external String get type;
external set type(String type);
external String get color;
external set color(String color);
external String getInfo();
external String getInfo2();
external Apple(String type);
}
一切都如愿了。
https://stackoverflow.com/questions/33168767
复制相似问题