使用$ scope作为json数据和$ http服务

时间:2013-06-04 21:38:24

标签: javascript angularjs

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

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

  });

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

无论如何都要从$ 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)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在$ scope上嵌套子属性并在其上调用toJson

<input ng-model='email'>

变为

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

这样

$http.post('/url', angular.toJson($scope.user));