我正在使用 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');
感谢您的浏览:)
最佳答案
1)老兄,无论你有什么借口,都要听听其他人的提示,永远不要使用同步调用,特别是如果你的后端处理速度很慢或者你有一些困惑的用户界面要求。
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);
}
});
}
希望有所帮助。
关于javascript - 将数组传递给 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791477/