2014-11-24 8 views
2

Как связать с ресурсом Javascript?Привязать к импортированному свойству Javascript

Я новичок в QML и, вероятно, думаю об этом неправильно, но в приведенном ниже примере я хочу, чтобы кнопка «Мир», когда я нажимаю ее.

main.qml

import QtQuick 2.0 
import QtQuick.Controls 1.0 
import "model.js" as Model 


Button { 
    id: button 
    text: Model.text 

    onClicked: { 
     Model.text = "World"; 
     print("Model.text is:", Model.text) 
     print("button.text is:", button.text) 
     // Model.text is "World" 
     // button.text is "Hello" 
     // They should both be "World" 
    } 
} 

model.js

var text = "Hello"; 

Я также попытался с помощью Qt.binding, но это не делает разницы.

main.qml

import QtQuick 2.0 
import QtQuick.Controls 1.0 
import "model.js" as Model 


Button {  
    onClicked: { 
     Model.text = "World"; 
    } 

    Component.onCompleted: { 
     text = Qt.binding(function() { return Model.text }) 
    } 
} 

Конечный результат я ищу, чтобы иметь свойства в выделенном ресурсе Javascript, такие как высота окна, цвета и изображения путей и т.д., и есть какой пункт используя их, чтобы оставаться в синхронизации с любыми изменениями, внесенными в ресурс.

Редактировать

Найдено связанный с этим вопрос: declare global property in QML for other QML files

+0

Я хочу, чтобы кнопка обновила свой текст при обновлении свойства Javascript. См. Мой обновленный пример. –

ответ

4

Как правило, вы не можете связать QML свойство переменной из чистого модуля JavaScript. Мой совет - использовать легкую альтернативу QML - QtObject. Вы можете добавить свой набор свойств и сигналы к нему, например:

QtObject { 
    id: mySettings 
    property string iconPath: "./icon.png" 
} 

Это свойство может быть переплетено позже точно так, как вы хотите.

+0

Я созерцал это, и это может сработать в моем случае. Если бы я действительно хотел сохранить его в области Javascript, возможно, я мог бы даже 'mySettings = Qt.createQmlObject (" импортировать QtQuick 2.0; QtObject {} ")' и прикрепить свойства оттуда? –

+1

После некоторых экспериментов и мысли, этот победитель. Спасибо кучу @QtRoS. –

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