2013-05-05 3 views
0

В настоящее время я разрабатываю сайт с дротиком, заменяющий JavaScript. Я хочу, чтобы какой-то код был скрыт для обычного пользователя, а другой код был видимым для зарегистрированных пользователей. Моя идея состояла в том, чтобы иметь (по крайней мере) два файла дротика с функциями main(), один видимый и один скрытый среднему пользователю. Теперь у меня есть класс с фабрикой, возвращающей кешированный экземпляр. Однако этот экземпляр не кэшируется из файла в файл. Как получить тот же экземпляр в двух разных файлах дарт?Dart Заводы и несколько основных функций

EDIT: Пример кода

Файл 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 
+0

Если класс, содержащий заводский конструктор, импортируется (внутри библиотеки), тогда экземпляр должен быть кэширован. Вы можете дать более подробную информацию? Может быть, пример? –

+0

Я тоже этого ожидал, но это не то, что я получаю. Пожалуйста, дайте мне знать, если у вас что-то другое. – budde

+0

Просьба указать точные команды, которые вы выполняете. Если вы используете эти программы в своем браузере, вставьте все HTML-файлы, содержащие теги '

Смежные вопросы