【发布时间】:2013-05-05 18:05:28
【问题描述】:
我目前正在开发一个用 dart 替换 JavaScript 的网站。我想为普通用户隐藏一些代码,并为登录的用户显示一些其他代码。我的想法是(至少)有两个 dart 文件,它们都具有main() 函数,一个对普通用户可见,一个对普通用户隐藏.现在我有一个带有工厂返回缓存实例的类。但是,此实例不会从文件缓存到文件。如何在两个不同的 dart 文件中获得相同的实例?
编辑:代码示例
文件file1.dart
import "some_lib.dart";
main(){
var a = new A("string1");
print(a.string);
}
文件file2.dart
import "some_lib.dart";
main(){
var a = new A("string2");
print(a.string);
}
文件some_lib.dart
library some_lib;
class A{
String string;
static A _cached;
factory A(String s){
if(_cached == null){
_cached = new A._internal(s);
}
return _cached;
}
A._internal(this.string);
}
文件index.html
<!DOCTYPE html>
<html>
<head>
<script type="application/dart" src="file1.dart"></script>
<script type="application/dart" src="file2.dart"></script>
<script type="text/javascript" src="packages/browser/dart.js"></script>
</head>
<body>
<h1>THIS IS DARTA</h1>
</body>
</html>
我希望这会打印出来
string1
string1
在控制台中,但我得到了
string1
string2
【问题讨论】:
-
如果包含工厂构造函数的类被导入(在库中),那么应该缓存实例。你能提供更多细节吗?也许是一个例子?
-
我也希望如此,但这不是我得到的。如果您得到不同的东西,请告诉我。
-
请列出您正在执行的确切命令。如果您在浏览器中运行这些程序,请粘贴所有包含
<script>标记的 HTML 文件。谢谢!
标签: dart