2017-04-03 10 views
2

は、ここでは、コードの一部です。私はそれがネイティブJavaScriptと同じであると思われると思います。QMLはJavaScriptの後半に機能を保存し、それを呼び出すためにどのように

var func = function(){ 
    //... 
} 
func(); 

QML JavaScriptでこれを行う方法は?

ところで、今、私のソリューションです:これは私にはバグのように見えます

Repeater{ 
    model: ["Text A", 
      "Text B", 
      "Text C", 
      "Text D"] 
    delegate: Button{ 
     text: modelData 
     onClicked: { 
      switch(index) 
      { 
       cast 0: 
       console.log("hello A") 
       break; 
       cast 1: 
       console.log("hello B") 
       break; 
       cast 2: 
       console.log("hello C") 
       break; 
       cast 3: 
       console.log("hello D") 
       break; 
      } 
     } 
    } 
} 
+0

あなたは私をもっとよく説明してもらえますか? – eyllanesc

+0

@eyllanescコンポーネント(ボタン)の作成時にラムダ関数の関数ポインタを変数として配列(Repeatorのモデル)に格納します。次に、ボタンをクリックすると、ストアド・ファンクション・ポインタをコールします。 – Jiu

答えて

1

、それだけでモデルインタフェースを介して機能を取得することはできません。デザインの限界かもしれません。関数に関しては、undefinedです。

あなたはこのようにそれを回避することができます:

property var mod : 
    [["Text A", function(){console.log("hello A")}], 
    ["Text B", function(){console.log("hello B")}], 
    ["Text C", function(){console.log("hello C")}], 
    ["Text D", function(){console.log("hello D")}]] 

    Column { 
    Repeater { 
     id: rep 
     model: mod 
     delegate: Button { 
     text: modelData[0] 
     onClicked: mod[index][1]() 
     } 
    } 
    } 
+0

ありがとう、それは素晴らしい作品です。 – Jiu

関連する問題