angularjs用angular.copy()复制的对象替换换行符

时间:2016-09-19 02:07:54

标签: javascript angularjs

我正在尝试替换使用来自json对象的angular.copy填充的对象属性中的所有换行符,但由于某种原因,该值无法修改。

angular.copy(data, vm.candidate);
console.log(vm.candidate.Comments.replace(/\n/g, '<br/>'));

输出仍然是:hi \ nhow \ nare \ nu \ n

但是如果我将此输出设置为变量

var xx = "hi\nhow\nare\nu\n";
console.log(xx.replace(/\n/g, '<br/>'));

输出结果为:您是如何按照预期进行的。

基本上,我正在尝试这样做:

 vm.candidate.Comments=$sce.trustAsHtml(vm.candidate.Comments.replace(/\n/g, '<br/>'));

在视图中:

<p ng-bind-html="candCtrl.candidate.Comments"></p>

尝试在视图中获得正确的outoput:

“你好吗”

为什么它不起作用的任何想法?

一个例子:jsfiddle

1 个答案:

答案 0 :(得分:1)

*请注意,我正在使用原始问题的评论中提供的jsfiddle。

基本上,您使用的是angular.copy错误。

根据here的角度文档:

[angular.copy] Creates a deep copy of source, which should be an object or an array.

您正在尝试复制string。 解决方案是复制整个对象,然后使用正则表达式将\n替换为<br/>

您的代码:

   function LoginController($scope) {
     $scope.car2 = {};
     $scope.car = { "ID": 3, "Comments": "hi\\nhow\\nare\\nu\\n","RatingID": 2,"Rating":"Unsure"};
     $scope.car2=angular.copy($scope.car.Comments.replace(/\n/g, '<br/>'));  
 }

工作代码(jsfiddle):

   function LoginController($scope) {
     $scope.car2 = {};
     $scope.car = { "ID": 3, "Comments": "hi\nhow\nare\nu\n","RatingID": 2,"Rating":"Unsure"}
     $scope.car2 = angular.copy($scope.car)
     $scope.car2 = $scope.car2.Comments.replace(/\n/g, '<br/>')
 }