2015-07-30 2 views
0

У меня есть проект, который использует структуру Aurelia. Я хочу сделать глобальным \ статическим объектом, к которому нужно получить доступ через пару файлов. Но когда я пытаюсь получить доступ к нему из другого файла, он говорит, что мой объект не определен. Вот как это выглядит:ТипScript Как получить доступ к объекту, определенному в другом классе

FirstFile.ts

export function showA() { 
    console.log("Changed a to " + a); 
} 
export var a = 3; 

export class FirstFile { 
    public ModifyA() { 
     a = 7; 
     showA(); 
    } 

Это говорит о том, что = 7. Тогда я использую его в другой файл, как это.

SecondFile.ts

import FirstFile = require("src/FirstFile"); 
export class SecondFile { 
    showA_again() { 
     FirstFile.showA(); 
} 

исполняю showA_again() в моем файле представления под названием SecondFile.html

<button click.trigger="showA_again()" class="au-target">Button</button> 

Когда я нажимаю кнопку, я вижу в консоли, что переменная "а" по-прежнему 3. Есть ли способ хранения переменных между файлами?

+0

А где вы называете ModifyA()? Я не вижу, чтобы этот метод назывался где угодно. – Buzinas

+0

Это плохо. Не делай этого. Добавьте a в класс. –

ответ

1

Я бы рекомендовал вам ввести FirstFile в SecondFile. Теперь ваш код имеет запах плохой архитектуры.

Чтобы ответить на ваш вопрос: возможно вы ищете статики (playground sample)

export class FirstFile { 

    static showA = function() { 
     console.log("Changed a to " + FirstFile.a); 
    } 

    static a = 3; 

    public ModifyA() { 
     FirstFile.a = 7; 
     FirstFile.showA(); 
    } 
} 

export class SecondFile { 
    showA_again() { 
     FirstFile.showA(); 
    } 
} 
+0

Хороший ответ. Есть и другие способы сделать это, но мне это нравится. –

+0

@MatthewJamesDavis Не могли бы вы привести пример? Было бы здорово увидеть другие варианты. – Artiom

+0

, вероятно, не стоит, это, наверное, лучший способ –