angularjs - 将一个对象的公共属性复制到另一个对象

Ruc*_*pta 7 javascript angularjs angularjs-directive angularjs-service angularjs-scope

我有一个像这样的控制器:

CheckoutController = function() {
    $scope.Profile = {
        firstname : 'Ruchir',
        middlename : 'Shakun',
        lastname : 'Gupta',
        email : 'ruchir@example.com',
        cellphone : '9876543210'
    }

    $scope.BillingDetails = {
        firstname : undefined,
        middlename : undefined,
        lastname : undefined,
        addressline : undefined,
        city : undefined,
        zipcode : undefined
    }

    $scope.update = function() {
        // I want to write some awesome code here as explained below
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在$scope.update功能; 我想写的东西,应该复制" 唯一的共同特性 ",即firstname,middlenamelastname$scope.Profile$scope.BillingDetails.

我试过angular.copyangular.extend,但是,

  • angular.extend合并$scope.BillingDetails$scope.Profile.所以,我得emailcellphone在性能$scope.BillingDetails以及-我不想要什么.

  • angular.copy覆盖 $scope.BillingDetails和我输了addressline,city并且 zipcode$scope.BillingDetails-我不想要的.

我想让我的update函数做的是它应该$scope.BillingDetails等于下面的对象:

{
    firstname : 'Ruchir',
    middlename : 'Shakun',
    lastname : 'Gupta',
    addressline : undefined,
    city : undefined,
    zipcode : undefined    
}
Run Code Online (Sandbox Code Playgroud)

这种情况只是一个例子.为了缩短我的问题的长度,我只提到了5-6个属性.事实上,我必须处理超过20个属性,而且都是动态的.所以它不会复制一个接一个性质为我工作firstname,middlenamelastnameProfileBillingDetails.我能做什么?

JcT*_*JcT 13

你可能会有这样的运气:

$scope.update = function() {
  _update($scope.Profile, $scope.BillingDetails);
}

function _update(srcObj, destObj) {
  for (var key in destObj) {
    if(destObj.hasOwnProperty(key) && srcObj.hasOwnProperty(key)) {
      destObj[key] = srcObj[key];
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

plunker