[英]jquery pass deferred, promise, do ajax, right pattern to do
I have 2 jquery pluggins (code is simplified): 我有2个jquery插件(简化了代码):
(function ($, window, document, undefined) {
$.fn.loadPageContent = function (url, postData) {
url = url || window.location.href;
postData = postData ? postData : {};
return $.post(url, postData);
}
})( jQuery, window, document );
(function ($, window, document, undefined) {
$.fn.infinityLoader = function (url, startPageNo, postData ) {
var $elms = this;
$(window).on('scroll.infinityScroll', function() {
if($(window).scrollTop() + $(window).height() > $(document).height()) {
$elms.loadPageContent(url, postData);
}
});
}
})( jQuery, window, document );
Is there a way to call infinityLoader and pass somehow promise to loadPageContent so i can be able to do: 有没有一种方法可以调用infinityLoader并以某种方式将诺言传递给loadPageContent,这样我就可以做到:
$('#content').infinityLoader('http://example.com?page=', 1, {}).done(function(){
alert('Content loaded!');
});
Change your infinityLoader
function like this. 像这样更改您的
infinityLoader
函数。 Remember you have to resolve Deferred
object after completing loadPageContent
post call. 请记住,必须在完成
loadPageContent
调用后解析Deferred
对象。
(function ($, window, document, undefined) {
$.fn.infinityLoader = function (url, startPageNo, postData) {
var d = $.Deferred();
var $elms = this;
$(window).on('scroll.infinityScroll', function () {
if ($(window).scrollTop() + $(window).height() > $(document).height()) {
$elms.loadPageContent(url, postData).done(function () {
d.resolve();
});
}
});
return d.promise();
}
})(jQuery, window, document);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.