我无法从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