2016-02-20 57 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),你的建議是正確的。由於某些原因,這不適用於我的代碼。無論如何。 – Cris69

+0

通過在你的案例中使用你正在使用的對象來複制相同的問題..你可以得到這個線索..其他方面我會幫你解決的。做upvote,如果它hepled。謝謝 ;) –