guy 7 years ago
parent
commit
577b9e4ed1
  1. 1
      Gruntfile.js
  2. 61
      bi/core.js
  3. 61
      docs/core.js
  4. 60
      src/core/load.js

1
Gruntfile.js

@ -127,6 +127,7 @@ module.exports = function (grunt) {
'src/core/shortcut.js',
'src/core/plugin.js',
'src/core/controller.js',
'src/core/load.js',
'src/core/proto/**/*.js',
'src/core/utils/**/*.js',
'src/core/behavior/behavior.js',

61
bi/core.js

@ -5926,7 +5926,66 @@ BI.Controller = BI.inherit(BI.OB, {
}
});
BI.Controller.EVENT_CHANGE = "__EVENT_CHANGE__";/**
BI.Controller.EVENT_CHANGE = "__EVENT_CHANGE__";$.extend(BI, {
$defaultImport: function () {
var ars = arguments;
if (ars[0] != null) {
ars[0] = BI.servletURL + '?op=resource&resource=' + ars[0];
}
this.$import.apply(null, ars);
},
$import: function () {
var _LOADED = {}; // alex:保存加载过的
function loadReady(src, must) {
var $scripts = $("head script");
$.each($scripts, function (i, item) {
if (item.src.indexOf(src) != -1) {
_LOADED[src] = true;
}
});
var $links = $("head link");
$.each($links, function (i, item) {
if (item.href.indexOf(src) != -1 && must) {
_LOADED[src] = false;
$(item).remove();
}
});
}
// must=true 强行加载
return function (src, ext, must) {
loadReady(src, must);
// alex:如果已经加载过了的,直接return
if (_LOADED[src] === true) return;
if (ext === 'css') {
var link = document.createElement('link');
link.rel = 'stylesheet'
link.type = 'text/css';
link.href = src;
var head = document.getElementsByTagName('head')[0];
head.appendChild(link);
_LOADED[src] = true;
} else {
// alex:这里用同步调用的方式,必须等待ajax完成
$.ajax({
url: src,
dataType: "script", // alex:指定dataType为script,jquery会帮忙做globalEval的事情
async: false,
complete: function (res, status) {
/*
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval
* 所以当status为success时就不需要再把其中的内容加到script里面去了
*/
if (status == 'success') {
_LOADED[src] = true;
}
}
})
}
}
}()
});/**
* 对数组对象的扩展
* @class Array
*/

61
docs/core.js

@ -23074,7 +23074,66 @@ BI.ShowListener = BI.inherit(BI.OB, {
})
}
});
BI.ShowListener.EVENT_CHANGE = "ShowListener.EVENT_CHANGE";/**
BI.ShowListener.EVENT_CHANGE = "ShowListener.EVENT_CHANGE";$.extend(BI, {
$defaultImport: function () {
var ars = arguments;
if (ars[0] != null) {
ars[0] = BI.servletURL + '?op=resource&resource=' + ars[0];
}
this.$import.apply(null, ars);
},
$import: function () {
var _LOADED = {}; // alex:保存加载过的
function loadReady(src, must) {
var $scripts = $("head script");
$.each($scripts, function (i, item) {
if (item.src.indexOf(src) != -1) {
_LOADED[src] = true;
}
});
var $links = $("head link");
$.each($links, function (i, item) {
if (item.href.indexOf(src) != -1 && must) {
_LOADED[src] = false;
$(item).remove();
}
});
}
// must=true 强行加载
return function (src, ext, must) {
loadReady(src, must);
// alex:如果已经加载过了的,直接return
if (_LOADED[src] === true) return;
if (ext === 'css') {
var link = document.createElement('link');
link.rel = 'stylesheet'
link.type = 'text/css';
link.href = src;
var head = document.getElementsByTagName('head')[0];
head.appendChild(link);
_LOADED[src] = true;
} else {
// alex:这里用同步调用的方式,必须等待ajax完成
$.ajax({
url: src,
dataType: "script", // alex:指定dataType为script,jquery会帮忙做globalEval的事情
async: false,
complete: function (res, status) {
/*
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval
* 所以当status为success时就不需要再把其中的内容加到script里面去了
*/
if (status == 'success') {
_LOADED[src] = true;
}
}
})
}
}
}()
});/**
* style加载管理器
*
* Created by GUY on 2015/9/7.

60
src/core/load.js

@ -0,0 +1,60 @@
$.extend(BI, {
$defaultImport: function () {
var ars = arguments;
if (ars[0] != null) {
ars[0] = BI.servletURL + '?op=resource&resource=' + ars[0];
}
this.$import.apply(null, ars);
},
$import: function () {
var _LOADED = {}; // alex:保存加载过的
function loadReady(src, must) {
var $scripts = $("head script");
$.each($scripts, function (i, item) {
if (item.src.indexOf(src) != -1) {
_LOADED[src] = true;
}
});
var $links = $("head link");
$.each($links, function (i, item) {
if (item.href.indexOf(src) != -1 && must) {
_LOADED[src] = false;
$(item).remove();
}
});
}
// must=true 强行加载
return function (src, ext, must) {
loadReady(src, must);
// alex:如果已经加载过了的,直接return
if (_LOADED[src] === true) return;
if (ext === 'css') {
var link = document.createElement('link');
link.rel = 'stylesheet'
link.type = 'text/css';
link.href = src;
var head = document.getElementsByTagName('head')[0];
head.appendChild(link);
_LOADED[src] = true;
} else {
// alex:这里用同步调用的方式,必须等待ajax完成
$.ajax({
url: src,
dataType: "script", // alex:指定dataType为script,jquery会帮忙做globalEval的事情
async: false,
complete: function (res, status) {
/*
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval
* 所以当status为success时就不需要再把其中的内容加到script里面去了
*/
if (status == 'success') {
_LOADED[src] = true;
}
}
})
}
}
}()
});
Loading…
Cancel
Save