通过Factory传递对$ scope对象的引用

时间:2016-04-08 12:52:58

标签: javascript angularjs

我在控制器$ scope中有一个项目。它取自API并传递给工厂,以便以易于显示的方式对其进行格式化。

angular.module('app').controller 'CustomersCtrl', ['$scope', 'CustomerDetailsFactory', function($scope, CustomerDetailsFactory) {
  $scope.item = { 
    full_name: "Jane Doe"

    //more values here 
  };

  $scope.details = CustomerDetailsFactory.get($scope.item);

}]

angular.module('app').factory 'CustomerDetailsFactory', [function() {
  var get = function(item) {
    var detailed = [{
      label: "Full name"
      value: item.full_name
    }

    //more objects here
    ];
   return detailed;
  }
  return {get: get};
}]

然后通过ng-repeat显示详细信息。它们需要可编辑,以便用户可以编辑某些字段并保存它们。我这样显示:

<div ng-repeat="detail in details">
  <label> {{detail.label}} </label>
  <p ng-if="!editMode"> {{ detail.value }} </p>
  <input ng-if="editMode" ng-model="detail.value"></input>

  //more fields like this

</div>

假设$scope.editMode更改为true,则会显示并更改输入。

问题是,更改的值保存在$scope.details模型中但不保存在$scope.item模型中(已传递给工厂,我相信参考)。而且我需要向服务器发送一个带有对象的JSON,就像我之前得到的那样,而不是工厂完全改变的结构,只有很好的显示才需要。

请解释如何通过引用$scope.details对象使$scope.item对象“绑定”,这样当我更改细节时,原始项目也会发生变化。

0 个答案:

没有答案