2013-06-20 5 views
4

У меня проблема с интеграцией QML/JS.Создание глобальных переменных с использованием JavaScript для QML

У меня есть переменная списка javascript, хранящаяся в файле .js. Я хочу записать эту переменную из одного файла QML и прочитать ее из другого файла QML. Кажется, я не могу найти решение. Я слишком упростил мой фактический код, чтобы сделать его понятным!

// writeValue.QML 
import "../javascript/storedValue.js" as StoredValue 
... 
MouseArea{ 
    onClicked{ 
     StoredValue.value.push(1) 
    } 
} 

// readValue.QML 
import "../javascript/storedValue.js" as StoredValue 
... 
Text{ 
    text : StoredValue.value 
} 

//storedValue.js 
var value = [] 

Я пробовал использовать '.pragma library' и не использовал его, но безрезультатно.

Что происходит, запись writeValue.QML успешно завершена, поэтому [1, 1, 1, ...]. В то время как readValue.QML просто находит пустой список, [].

ответ

5

Просто введите .pragma library в начале файла JS. Таким образом, будет только один экземпляр, импортированный компонентами QML.

Помните, однако, что при изменении свойства var не производится никакого сигнала об обновлении. Если вы хотите иметь глобальный var с поддержкой обновления, вы должны экспортировать пользовательский QObject через setContextProperty() со стороны C++.

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

  • Нет связанных вопросов^_^