我無法從Post.success函數中調用this.RenderDeals()。我認爲這與範圍有關?有人可以解釋這個問題,並可能提出一種解決方法。我嘗試過使用原型和模塊模式,都沒有任何運氣。Javascript class scope
FYI Post是一個返回jQuery Deferred對象的$ .ajax包裝器。
function Deals() {
this.template = '#trTemplate';
this.container = '#containerTable';
this.GetDeals = function() {
Post('Deal.svc/GetDeals')
.success(function (result) {
this.RenderDeals(result);
});
};
this.RenderDeals = function (deals) {
$(this.template).tmpl(deals).appendTo(this.container);
}
}
var deal = new Deals();
deal.GetDeals();
UPDATE:
好了,所以我加了下面的行正上方GetDeals功能:
var me = this;
,而是叫
me.RenderDeals(result);
看似正常工作,但我不知道爲什麼。
這是因爲你已經定義'我'然後使用它。但直接使用'this'會給你一個別的事情的例子,因爲你處於不同的上下文/範圍中。 – Kon 2011-03-18 23:56:42
只是一個僅供參考的東西,在javascript成語中,一個以大寫字母開頭的函數意味着它是一個構造函數。沒有問題或任何東西,但它看起來很奇怪的人是一個JavaScript的人,但不是一個.net人 – 2011-03-18 23:56:51
@Matt也許我會開始一場革命...... – 2011-03-19 00:34:24