无法使用Angular.merge()合并对象

时间:2016-02-20 18:19:10

标签: javascript angularjs object angularjs-scope

我正在尝试将合并对象传递给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

当然,我无法传递完整的物体。

1 个答案:

答案 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);