1
比方說,我們有這樣的事情與jQuery的選擇2插件:jQuery的對象文本或模塊模式
$(function() {
$('.select2').select2({
minimumInputLength: 1,
ajax: {
dataType: 'json',
cache: true,
url: getUrl,
data: getData,
processResults: getProcessResults
}
});
function getUrl() {
return 'http://beta.json-generator.com/api/json/get/4JZYSpOHM';
}
function getData(params) {
return {
q: params.term
};
}
function getProcessResults(data) {
return {
results: data
};
}
});
.select2 {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
<select class="select2"></select>
但我們想使用對象文本或模塊模式jQuery的功能和插件這樣的:
var myAjax = {
init: function() {
var _this = this;
$('.select2').select2({
minimumInputLength: 1,
ajax: {
dataType: 'json',
cache: true,
url: _this.getUrl,
data: _this.getData,
processResults: _this.getProcessResults
}
});
},
getUrl: function() {
return 'http://beta.json-generator.com/api/json/get/4JZYSpOHM';
},
getData: function(params) {
return {
q: params.term
};
},
getProcessResults: function(data) {
return {
results: data
};
}
};
$(document).ready(myAjax.init);
.select2 {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
<select class="select2"></select>
我們該怎麼做?
來源:
https://learn.jquery.com/code-organization/concepts/
https://select2.github.io/examples.html#data-ajax
謝謝,但它不起作用。我編輯了這些例子。往上看。 – baker
如果我添加()。我得到:「message」:「Uncaught TypeError:_this.getUrl不是函數」 – baker
你是對的 - 我的錯誤。我已經爲你糾正了答案。問題在於'this'的作用域,因此在處理屬性和方法時需要直接使用'myAjax'。 –