2017-02-21 3 views
0

これは単なる一般的な質問です。 私はこの種のコードの実装をいくつか見てきましたが、それほどではありません。 だからqtの作成者で、私は「othervar」がどのような方法で変更されますときにプロパティ「valが」自己を再評価しますのでQt QMLがjarsのvarsと似ています

property int othervar: 3; 
property int val: 1 + othervar; 

のような2つのプロパティを定義した場合。

jsで動作するようにこのようなものを書き直した場合、どうすればこの問題を解決できますか?

答えて

0

通知とバインディングはQMLプロパティに対してのみ機能し、JSではすぐに利用できる機能はありません。あなたはそれをエミュレートすることができますが、何か特別な構文が必要です。それはエレガントで便利ではありません。

=演算子の代わりにセッター関数を使用して信号を実装して組み込むことは可能ですが、実際のバインディング式は扱いにくいものになります。これはQMLで自動的に行われます。手動で行う場合は、特定の式で使用されているすべての値の通知信号を、それを再評価する関数に手動で接続する必要があります。質問のような簡単な表現ではかなり簡単ですが、複雑なものについては適用できません。短い中のSO

:私はこのことについて を行くかもしれない方法をJSで動作するように、このような何かを再書き込みするためだった場合

あなたはそうではありません! 「言語」レベルでのサポートが必要です。このようなことはC++のQtでも利用できません。QMLによって容易になります。

+0

ありがとうございます。私はそれをやり遂げることができる方法を考えていました。そして、それはそれぞれの変数にパブとサブオブジェクトを与えることを意味します。しかし、わからない部分は2つのことです。もし私が各文字列、int、boolなどでそれをしたら、それはメモリのようなものでしょうか? jsヒープが処理するために多くの方法でしょうか?2番目に – TheMan68

+0

とすると、varを初期化すると 'var val1 = val2;私は値が変更されたときに各サブスクライバなどを更新するためにpubsとsubs2のpubsとsubsオブジェクトでpubsとsubsイベントを設定することができましたが、もう一度、 '='割り当てイベントが私自身のObject.prototypeを書いたとしても。そして、最後に、私はまだjsの専門家がいません。私はqtと私がいくつかの実装をbroswerに持たせたいと思っています。 – TheMan68

+0

@ TheMan68 - 私はまさに自分自身のJS wizzではない、私は非常に基本的なものを知っている。あなたはJSの群衆を対象とした別の質問をしたいかもしれません。また、これは参考になるかもしれません:http://stackoverflow.com/questions/23692174/can-i-make-a-variables-value-depend-on-changes-to-another-variable – dtech

0

QtQuickコンテキストでそうしたい場合は、基本的に2つの方法があります。バインドはQt bindings documentation pageでうまく説明されています。プロパティで

  1. Item { 
        property int othervar: 3 
        property int val: 0 
    
        Component.onCompleted: { 
         // Create a binding dynamically 
         val = Qt.binding(function() { return 1 + othervar }) 
        } 
    } 
    

ときに注意することが重要である既存のプロパティにJavaScriptからバインディングを作成することにより、シグナルハンドラ

Item { 
    property int othervar: 3 

    onOthervarChanged: { 
     // Update val 
     jsObject.val = 1 + othervar; 
    } 
} 
  • "に変更しました"以前は拘束力のある財産に譲渡した。例えば、val = 3、既存のバインディングが削除され、値は自動的に更新されなくなります。

  • +0

    もう一度。私はあなたに戻っていない残念申し訳ありません。 あなたは私の質問を少し誤解しています。 javascriptで独自のバージョンを実装したければ、このようないくつかの変数を実装したいと思うでしょうか? – TheMan68

    +0

    例:var val = qml varsのような独自の値を更新するオブジェクトのあるタイプ – TheMan68

    関連する問題