问题:
在打开模态框时,请求数据,如果数据量很大,需要等很久,而且模态框仅仅是页面上的某一个功能,需要频繁操作,这样就带来很差的体验和糟糕的等待
解决思路:
直接在这个页面构造一个缓存容器,这样在反复打开模态框的时候,直接将数据传给模态即可
代码:
//构造缓存容器
var cache = {};
$scope.createCache = function () {
return function (key, value) {
if (value !== undefined) { //设置缓存
cache[key] = value;
cache["time"] = Date.parse(new Date()); //每次设置当前的缓存时间
return cache[key]
}
else {
return cache[key]; //读取缓存
}
}
};
$scope.get_user = function (key) {
var userCahce = $scope.createCache();
function userDate(key) {
if (userCahce(key) != undefined && ((Date.parse(new Date()) - cache["time"]) / (3600 * 1000) < 6)) //如果缓存中有值且时间不超过6小时
{
return userCahce(key)
} else { //否则从后台更新数据到前端,并设置缓存
sysService.getUser({}, {}, function (res) {
if (res.result) {
return userCahce(key, res.data);
} else {
msgModal.open("error", res.message);
}
});
}
}
return userDate(key)
};
$scope.addAccount = function () {
var modalInstance = $modal.open({
templateUrl: static_url + 'client/views/addAccount.html',
windowClass: 'dialogDetail',
controller: 'addAccount',
backdrop: 'static',
resolve: {
objectItem: function () {
var data = $scope.get_user("key");
return data;
}
},
});
modalInstance.result.then(function () {
$scope.account();
})
};
网友评论