我是这种东西的新手,所以我想要一些设计建议。假设我有这样的事情
$(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
});
}
}
}
这是进行延迟加载和缓存的好方法,还是您会提出更好的替代方案?避免两次编写渲染函数的有用解决方案是什么?当然你可以有类似的东西:
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
}
}
但是随后这两个函数及其名称变得相当混乱,因此最好执行以下操作:
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
});
}
}
}
最后一个模式是个好主意吗?这样做的通常方法是什么?