我正在使用Web服务来填充选择列表,我现在需要对许多选择列表执行相同的操作,理想情况下使用相同的方法来尝试和限制代码量。这是我用来进行Web服务调用的方法:
function GetColourReferences(self) {
$.ajax({
async: false,
cache: false,
type: 'GET',
url: '/GetColourReferences',
success: function (data) {
self.colourReferences(data);
}
});
}
我尝试过与以下类似的东西,但我无法让它起作用 - 它甚至可能吗?
function GetReferences(self, list, refUrl) {
$.ajax({
async: false,
cache: false,
type: 'GET',
url: refUrl,
success: function (data) {
list(data);
}
});
}
以下是我如何称呼它(我正在使用Knockout):
GetReferences(self, self.colourReferences, '/GetColourReferences');
感谢您寻找:)
答案 0 :(得分:0)
1)老兄,无论你的借口听别人的提示,都不要使用同步电话,特别是如果你的后端处理速度慢或者你有一些麻烦的ui要求。
2)整理你的闭包并学习如何定位一个对象的方法,你将解决你的问题,但我会很好,并指出你正确的方向。
3)这不起作用只是因为你传递了对函数的引用,而不是对象的方法的引用,所以巧妙地称为self(WTF,你听说过语义),旁边的列表是失去了对象范围,这就是问题所在!
function GetReferences(self, list, refUrl) {
$.ajax({
async: false,
cache: false,
type: 'GET',
url: refUrl,
success: function (data) {
list.call(self, data);
}
});
}
希望有所帮助。