2015-05-12 69 views
5

我不想在每個函數中實例化一個類。如何? 在Typescript語法中組織這個最佳實踐應該是什麼?Typescript&Jquery:調用Jquery onclick函數的類的最佳實踐是什麼?

$(".container_dettaglio .varianti .variante a").click(function (event) { 
    event.preventDefault(); 
    var pr = new Prodotto($(this).data('variante')); 
    pr.cambiaVariante(); 
}); 

$(".meno").on('click',function(e){ 
    e.preventDefault(); 
    var pr = new Prodotto($(this).data('variante')); 
    pr.rimuoviQuantita(); 
}); 

$(".piu").on('click',function(e){ 
    e.preventDefault(); 
    var pr = new Prodotto($(this).data('variante')); 
    pr.aggiungiQuantita(); 
}); 
+1

假設'data-variante'對於每個元素都會有所不同?因此,您需要重新調整「Produtto」對象以從您修改的屬性中讀取,或者保留當前爲每個設置的值實例化新類的模式。 –

+0

是的,確切地說。謝謝。 – marco

回答

2

最好的解決方法(我認爲)你可以做的就是重構你的類以返回將滿足你的願望的函數。這是我的意思的一個例子:

var MyClass = function(){ 
    return { 
     Set: function(a, b, c){ 
      return [a, b, c].toString(); 
     }, 

     Modify: function(a){ 
      return a + ' .)'; 
     } 
    } 
}; 

$(function(){ 
    var mc = new MyClass(); 

    $('.a').on('click', function(){ 
     alert(mc.Modify($(this).data('variant'))); 
    }); 

    $('.b').on('click', function(){ 
     alert(mc.Modify($(this).data('variant'))); 
    }); 

}); 

所以,通過這種方式你實例化你的類一次。 Check the jsFiddle

+0

太好了,非常感謝。 – marco

相關問題