[AngularJS]无法合并具有 Angular.merge() 的对象

发布时间: 2017/4/16 21:20:45
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图给 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:

当前 angular.merge 方法考虑 3rd 参数的对合并过程。在这种情况下 {where:toBeExtended} 通过合并过程 & {order: order} 将被忽略。

您需要首先创建要合并的整个对象然后通过该对象合并方法。

var objectToBeMerge = {};
angular.extend(objectToBeMerge, {where:toBeExtended})
angular.extend(objectToBeMerge, {order: order})
var extendedObj = angular.merge({}, $scope.query, objectToBeMerge);
赞助商