この種のものは初めてなので、デザインの提案をお願いします。私がこのようなものを持っているとしましょう
$(function () {
$('#menuBtn').on('click', app.openUsersMenu);
});
var app = {
users: null,
openUsersMenu: function () {
if (app.users != null) {
//render menu
} else {
$.ajax({
url: '/getUsers.json'
}).success(function (data) {
app.users = data;
//render menu
});
}
}
}
遅延読み込みとキャッシュを行う良い方法ですか、それともより良い代替案を提案しますか? レンダリング関数を 2 回書くのを避けるための通常の解決策は何ですか? もちろん、次のようなものを使用できます。
var app = {
users: null,
openUsersMenu: function() {
if (app.users != null) {
app.renderMenu();
} else {
$.ajax({
url: '/getUsers.json'
}).success(function (data) {
app.users = data;
app.renderMenu();
});
}
},
renderMenu: function() {
//use app.users to render
}
}
しかし、その後、2 つの関数とその名前がややこしくなるので、次のようにしたほうがよいでしょう。
var app = {
users: null,
openUsersMenu: function () {
if (app.users != null) {
//render menu
} else {
$.ajax({
url: '/getUsers.json'
}).success(function (data) {
app.users = data;
app.openUsersMenu(); // Call itself, now with data
});
}
}
}
最後のパターンは良い考えですか?これを行う通常の方法は何ですか?