1

我想发布 Angular 范围服务上的所有内容,在我的情况下它并不多,但我不想创建另一个对象:

var model = angular.toJson($scope);
$http.post('/myUrl', model)
  .success(function(data) {

  });

但是,看起来 $scope 是一个循环结构,因为您可以通过:Converting circular structure to JSON当我使用 JSON.stringify 或字符串文字 $Scope 时,当我使用上面的示例时。

有没有办法从 $scope 中捕获所有这些数据?

这是我目前的 hack,使用下划线和 underscore.string:

  var toJs = function(item) {
    var obj = {};
    _.each(item, function(val, key) {
      if (!_s.startsWith(key,'$')) {
        obj[key] = val;
      }
    });
    return obj;
  };

然后只是通过:

  toJs($scope)
4

2 回答 2

0

您不想创建对象,因此可能的肮脏解决方案是从 $scope 中删除循环引用和您不想发布的所有其他属性,调用toJson,然后将所有先前删除的属性放回 $scope。

于 2013-06-04T22:02:32.927 回答
0

在 $scope 上嵌套一个子属性并调用toJson它。

<input ng-model='email'>

变成

<input ng-model='user.email'>

以便

$http.post('/url', angular.toJson($scope.user));
于 2013-07-03T22:46:56.497 回答