Angular 1.3.x 的 `.merge()` 的反向移植
Backport of `.merge()` for Angular 1.3.x
Angular 1.4(还不稳定)有一个我感兴趣的功能:.merge()
。
因为我不想使用不稳定的库,所以我正在寻找 Angular 1.3.x 的替代方法。我的项目中是否有任何 "backports" 库可以模仿 Angular 的 .merge()
?
只要看看实际的代码,它的文档非常详细,您应该能够自己模仿它 https://code.angularjs.org/1.4.0-rc.2/angular.js:
第 459 行
合并函数:
function merge(dst) {
return baseExtend(dst, slice.call(arguments, 1), true);
}
其中使用了baseExtend函数
function baseExtend(dst, objs, deep) {
var h = dst.$$hashKey;
for (var i = 0, ii = objs.length; i < ii; ++i) {
var obj = objs[i];
if (!isObject(obj) && !isFunction(obj)) continue;
var keys = Object.keys(obj);
for (var j = 0, jj = keys.length; j < jj; j++) {
var key = keys[j];
var src = obj[key];
if (deep && isObject(src)) {
if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
baseExtend(dst[key], [src], true);
} else {
dst[key] = src;
}
}
}
setHashKey(dst, h);
return dst;
}
其中使用
function setHashKey(obj, h) {
if (h) {
obj.$$hashKey = h;
} else {
delete obj.$$hashKey;
}
}
用 angular 版本替换 baseExtend 中缺失的函数(即 angular.isObject 用于 isObject 等。)
Angular 1.4(还不稳定)有一个我感兴趣的功能:.merge()
。
因为我不想使用不稳定的库,所以我正在寻找 Angular 1.3.x 的替代方法。我的项目中是否有任何 "backports" 库可以模仿 Angular 的 .merge()
?
只要看看实际的代码,它的文档非常详细,您应该能够自己模仿它 https://code.angularjs.org/1.4.0-rc.2/angular.js:
第 459 行
合并函数:
function merge(dst) {
return baseExtend(dst, slice.call(arguments, 1), true);
}
其中使用了baseExtend函数
function baseExtend(dst, objs, deep) {
var h = dst.$$hashKey;
for (var i = 0, ii = objs.length; i < ii; ++i) {
var obj = objs[i];
if (!isObject(obj) && !isFunction(obj)) continue;
var keys = Object.keys(obj);
for (var j = 0, jj = keys.length; j < jj; j++) {
var key = keys[j];
var src = obj[key];
if (deep && isObject(src)) {
if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
baseExtend(dst[key], [src], true);
} else {
dst[key] = src;
}
}
}
setHashKey(dst, h);
return dst;
}
其中使用
function setHashKey(obj, h) {
if (h) {
obj.$$hashKey = h;
} else {
delete obj.$$hashKey;
}
}
用 angular 版本替换 baseExtend 中缺失的函数(即 angular.isObject 用于 isObject 等。)