我正在尝试将合并对象传递给getData()函数:
$scope.query = {
order: 'date',
limit: 15,
page: 1
};
$scope.src = {txt:0};
$scope.onReorder = function (order) {
var toBeExtended = angular.copy($scope.src);
var extendedObj = angular.merge({}, $scope.query,{where:toBeExtended},{order: order});
getData(extendedObj)
};
如果我将console.log()分配给合并或合并本身的变量,我不明白为什么会得到不同的结果。 换句话说:
console.log(extendedObj); shows:
Object
limit: 15
order: "date"
page: 1
where: Object
__proto__: Object
__proto__: Object
console.log(angular.merge({},$scope.query,{where:toBeExtended},{order:order})); shows:
Object
limit: 15
order: "date"
page: 1
where: Object
src: 0
__proto__: Object
__proto__: Object
当然,我无法传递完整的物体。
答案 0 :(得分:1)
当前angular.merge
方法考虑第3个参数,用于合并过程。在这种情况下,{where:toBeExtended}
被传递用于合并过程& {order: order}
被忽略。
您需要首先创建要合并的整个对象,然后将该对象传递给合并方法。
var objectToBeMerge = {};
angular.extend(objectToBeMerge, {where:toBeExtended})
angular.extend(objectToBeMerge, {order: order})
var extendedObj = angular.merge({}, $scope.query, objectToBeMerge);