2016-09-19 56 views
0

我想要替换所有使用angular.copy从json对象填充的对象属性中的换行符,但由于某些原因该值无法修改。angularjs从用angular.copy复制的对象替换换行()

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

输出仍然是:喜\ nhow酒店\ n是否\ NU \ n

但是,如果我在一个变量

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

输出设置这个输出是:喜
怎么
是如预期的那样,
u

基本上,我试图做这样的事情:

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

在视图:

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

试图获得在视图右侧outoput:

“嗨,如何是你“

任何想法,为什么它不工作?

一个的jsfiddle例如:jsfiddle

+0

你确定,那'vm.candidate.Comments'有** \ n **? –

+0

是的。 console.log的输出(vm.candidate.Comments.replace(/ \ n/g,'
'));是:嗨\ nhow \ nare \ nu \ n –

+0

这真的很奇怪。你可以创建jsfiddle吗? –

回答

1

*请注意,我用的意见提供给原始问题的jsfiddle工作。

基本上,您正在使用angular.copy错误。

据当时here角文档:

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

你试图复制string。 解决的办法是复制整个对象,然后用你的正则表达式与<br/>

你的代码替换\n

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/>') 
} 
+0

谢谢@nadavvandan。我会重构我的代码来使用你的方法。然而,问题在于,由于某种原因,服务器返回的json具有双反斜杠,即使db有单个反斜杠也是如此。所以正则表达式失败了。刚刚在小提琴中实现这个例子时才意识到。 –