0

我有一个接受报价输入(纯度、重量、总量)的应用程序,它会推送到 $scope.quote:

// Controller action //
$scope.quote.push({ 
  total: ((($scope.karat * $scope.spot) * $scope.percentage) / 20) * $scope.estimatedWeight,
  karat: $scope.karat * 100,
  description: $scope.description,
  actualWeight: $scope.actualWeight,
  estimatedWeight: $scope.estimatedWeight,
  percent: $scope.percentage * 100,
  spot: $scope.spot
})

// Factory //
app.factory('quoteFactory', function() {
  var quote = [];
  var factory = {};
  factory.getQuote = function () {
return quote;
  };
return factory;
})

以及报价完成后的发布/保存

$scope.save = function() {
  var now = $scope.getDate();
      $scope.quote.push({
        createdOn: $scope.getDate()
      })
    Restangular.all('quote').post($scope.quote).then(function(quote){
      $location.path('#/scrap')
    }); 
  };

当尝试访问引用 JSON 以进行列表或编辑时,由于 JSON 结构,我无法访问所需的所有信息。

{
"0": {
    "total": 401.79040000000003,
    "karat": 74,
    "description": "Rings",
    "actualWeight": 12,
    "estimatedWeight": 11,
    "percent": 80,
    "spot": 1234
},
"1": {
    "total": 560.7296,
    "karat": 56.8,
    "description": "Test",
    "actualWeight": 22,
    "estimatedWeight": 20,
    "percent": 80,
    "spot": 1234
},
"2": {
    "total": 48.5625,
    "karat": 92.5,
    "description": "Testing",
    "actualWeight": 80,
    "estimatedWeight": 75,
    "percent": 70,
    "spot": 20
},
"3": {
    "createdOn": "2013-11-26T21:26:42.253Z"
},
"_id": {
    "$oid": "52951213e4b05f03172f14e7"
}
}

每个索引代表一个行项目的报价和 createdOn 信息。我想弄清楚的是,是否有一种方法可以访问所有行项目信息而无需调用每个单独的索引?

我研究了一些 lodash/underscore,考虑过重构后端......不太确定从这里去哪里。

github上的完整项目代码

4

1 回答 1

0

由于没有太多关于后端如何工作或处理数据的详细信息,我假设问题在于生成 JSON。

我要做的是改变 Angular 将数据发布到服务器的方式,例如:

保存功能:

$scope.save = function() {
  var url = 'http:127.0.0.1:3000/url/you/send/your/data/to',
      json = JSON.stringify($scope.quote);

  $http({
    method: 'POST',
    url: url,
    data: json,
    headers: {
      'Content-Type': 'application/json'
    }
  }).then(function(response) {
    $location.path('#/scrap');
  });
};

这将为您提供更多控制权,并确保您控制数据如何转换为正确的 JSON,在这种情况下使用对象的.stringify()方法JSON

我从您的评论中看到您关心索引;通常与服务器同步的对象有一个属性id,表示它们的数据库 id 不是它们的客户端数组索引。这是将客户端上的模型数据保留为服务器端真实表示的好方法。

有相当多的库可以帮助这个流程客户端,我建议 - 因为你已经在使用 Angular - 阅读Angular Resource

注意:如果您想使用该JSON.stringify()方法支持旧版浏览器,请确保使用Crockford 的 JSON2.js

于 2013-11-28T09:29:37.053 回答