這裏是基於離angular.extend功能的extendDeep功能。如果您添加到您的$範圍,那麼您需要能夠調用
$scope.meta = $scope.extendDeep(ajaxResponse1.myMeta, ajaxResponse2.defaultMeta);
,讓你正在尋找的答案。
$scope.extendDeep = function extendDeep(dst) {
angular.forEach(arguments, function(obj) {
if (obj !== dst) {
angular.forEach(obj, function(value, key) {
if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {
extendDeep(dst[key], value);
} else {
dst[key] = value;
}
});
}
});
return dst;
};
注意:此函數具有將來自後面參數的值複製到先前參數中的副作用。爲了簡單修復這種副作用,您可以將dst[key] = value
更改爲dst[key] = angular.copy(value)
。
但是你可以簡單地從jQuery的源複製'$ .extend'?這是[不難發現](https://github.com/jquery/jquery/blob/59232825aa87b941dd2418a6860b64017dfec0ae/src/core.js#L125),以及相當獨立。 – Bergi 2014-12-17 20:54:26