在Angularjs中只将Javascript对象转换为JSON一次

时间:2016-03-16 12:59:43

标签: javascript angularjs json

我想用JSON将javascript对象转换为angular.toJson一次。 我的代码是:

$scope.task.tags = [{"id":22,"tag":"printer","created_at":"2016-03-15" }];

$scope.create = function(task) {
   tmp.tags = angular.toJson(task.tags);
   TaskService.create(tmp);
});

并在html中:

<input type="text" ng-model="task.tags">
<button class="btn btn-success" ng-click="create(task)">save</button>

但是当多次点击button时,请向我显示{{task.tags}},如下所示:

第一个结果:

[{"id":22,"tag":"printer","created_at":"2016-03-15"}]

第二个结果:

"[{\"id\":22,\"tag\":\"printer\",\"created_at\":\"2016-03-15\"}]"

第3个结果:

[{\\\"id\\\":22,\\\"tag\\\":\\\"printer\\\",\\\"created_at\\\":\\\"2016-03-15 09:59:23\\\"}]\""

1 个答案:

答案 0 :(得分:2)

尝试使用Angular JSON filterangular.isObject方法:

$scope.create = function(task) {
    var taskTagsCopy = angular.copy(task.tags);

    tmp.tags = angular.isObject(taskTagsCopy) ?  $filter('json')(taskTagsCopy) : taskTagsCopy;
    TaskService.create(tmp);
});

我创建了一个JSFiddle example。您可以检查控制台,看看该对象只转换一次。

修改

我添加了angular.copy,因此task.tags不再更改。