2016-11-07 7 views
0

は、私は次の関数は、JSONデータに格納されている別のオブジェクトに格納します。コンストラクタから匿名関数オブジェクトを作成し、

function (e) { e.preventDefault();var caro=$(e.target).parents('.carousel');curr=$(caro).parents('.grid-stack-item');currInt=$(curr).find('.carousel-indicators li.active').data('slide-to');$(curr).find('.carousel-indicators li.active').removeClass('active');currInt+=1;var currLi=$(curr).find('.carousel-indicators li')[currInt];$(currLi).addClass('active');$(caro).carousel(1);$(caro).carousel('pause');var tr=$(e.target).closest('tr');data=this.dataItem(tr);wizard(1,$(e.target).parents('.grid-stack-item'),data); } 

私はJSON文字列に関数を必要とする外部ライブラリを使用していますオブジェクトのプロパティにJS関数としてアタッチすることができます。

文字通り、コードは次のようになります。

grid({ 
    click: data.functionData 
)}; 

私がいる問題はdata.functionDataが文字列として評価されており、クリックイベントがグリッドオブジェクト上で実行されたとき、それはその結果でありますデータとしてのエラーは文字列ではなく関数でなければなりません。私がする必要がどのような

無名関数を作成することです...

var anonFun = new Function(); 

、パラメータとしてイベントを取る....

function (e) { } 

その後でクリックイベントにアタッチグリッド...

grid({ click: function (e) { //dostuff } }); 

私はこれを達成するのに近いですが、私の問題は今私は匿名を与える方法がわかりません関数のコンストラクタ、パラメータ 'e'で作成された関数です。のもっぱら内側の内容であることをjsonDataを

var anonFunc = new Function(e, jsonData); 

と変更:

は、私は私のような何かをする必要があると思う...私のコードは、文字通り

var jsonData = "function (e) { e.preventDefault();var caro=$(e.target).parents('.carousel');curr=$(caro).parents('.grid-stack-item');currInt=$(curr).find('.carousel-indicators li.active').data('slide-to');$(curr).find('.carousel-indicators li.active').removeClass('active');currInt+=1;var currLi=$(curr).find('.carousel-indicators li')[currInt];$(currLi).addClass('active');$(caro).carousel(1);$(caro).carousel('pause');var tr=$(e.target).closest('tr');data=this.dataItem(tr);wizard(1,$(e.target).parents('.grid-stack-item'),data); }"; 

var anonFunc = new Function(jsonData); 

grid({ click: anonFunc)}; 

を私の現在の状態を与えるために、関数。

+1

はい、それは一つのアプローチのように聞こえます。これを行うには 'function(e){'と '' ''を取り除くだけで十分でしょうか?そうでないとJSON文字列を変更する必要がありますか? –

+0

(関数(e){})(これは "eとして渡されます"); ... –

答えて

関連する問題