2016-02-20 4 views
1

Я пытаюсь передать объединенный объект функции GetData():Невозможно объединить объекты с Angular.merge()

 $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) 
    }; 

Я не понимаю, почему я получаю разные результаты, если я утешаю. 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 метод рассматривает третий параметр, который идет для процесса слияния. В этом случае {where:toBeExtended} передается для процесса объединения & {order: order} игнорируется.

Вам необходимо сначала создать целый объект для объединения, а затем передать этот объект методу слияния.

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

@ Cris69 Вы могли бы предоставить мне plunkr? тогда было бы лучше. –

+0

Я сделал плункер [здесь] (https://plnkr.co/edit/KZi46YqvDzWvG9TrQIMY?p=preview), ваше предложение верное. По некоторым причинам это не работает над моим кодом. Thx в любом случае. – Cris69

+0

Реплицируйте ту же проблему, взяв объект, который вы используете в своем случае. Вы могли бы получить эту подсказку. В противном случае я помогу вам в этом. Сделайте upvote, если он будет использован. Благодаря ;) –

Смежные вопросы