2013-12-01 3 views
0

Привет, я пытаюсь объединить две модели, которые связаны значениями формы html. Моя конечная цель - создать вложенный объект JSON для запроса POST. Я попытался использовать метод DeepExtend, как показано ниже, но он работает только для объектов с неограниченной областью. Я действительно хочу знать, почему это происходит.Объединить две модели области в angularjs

Это моя попытка по этому вопросу

as.factory('model1', [ 
    function() { 
     return { 
      Header1: { 
       code: '', 
       name: '', 
       type: '' 

      } 
     }; 

    } 
]); 


as.factory('model2', [ 
    function() { 
     return { 
      Header2: { 
       code2: '', 
       name2: '', 
       country: '' 
      } 
     }; 

    } 
]); 

as.controller('cntrl', function ($scope, $http, i18n, $rootScope, model1, model2) { 

    function deepObjectExtend(target, source) { 
     for (var prop in source) 
      if (prop in target) 
       deepObjectExtend(target[prop], source[prop]); 
      else 
       target[prop] = source[prop]; 
     return target; 
    } 

    var result = deepObjectExtend($scope.mdoel1, $scope.model2); 
    $rootScope.resultString = angular.toJson(result); 
    console.log($rootScope.resultString); 
}); 

Мой окончательный результат должен быть:

Header1: { 
     code:'123', 
     name: '321', 
     type:'123'    
     }, 
Header2: { 
     code2:'123' , 
     name2: '123', 
     country: '123' 
     } 
+0

ли вы назначить model1 и model2 размаху где-нибудь? Вероятно, это опечатка: '$ scope.mdoel1' –

+0

У углового есть встроенный метод расширения http://docs.angularjs.org/api/angular.extend – charlietfl

+0

извините за опечатку да, я связываю их с значениями формы html , и я попробовал метод расширения. это не хорошо для глубокого расширения –

ответ

1

кажется, что вы хотите создать новый объект из двух моделей.

Если так что вы можете сделать:

var result={} 
angular.extend(result, $scope.model1, $scope.model2); 
+0

не работает, все, что отображается, - «{}« –

+0

создайте демонстрацию в jsfiddle.net или plunker – charlietfl

+0

Я могу легко изменить $ scope.model # на json, но когда я пытаюсь расширить , это не работает. если функция области действия не работает, она не будет работать и для преобразования в json. проблема только в том, что я расширяю эти две модели. –

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