在角度js中为什么这个javascript替换方法来替换控制器端的工作而不是模板端的工作

时间:2016-04-16 08:37:42

标签: javascript angularjs

模板角度表达式:

<h2 style="white-space:normal">
    {{notification.noti_val.replace(/\&nb\s*sp;/g, ' ')}}
</h2>

不起作用

function TodoCtrl($scope) {
    $scope.notification = 'ujjal saha&nbsp;share&nbsp;own&nbsp;wall';
    $scope.notif = notification.noti_val.replace(/\&nb\s*sp;/g, '') 
} 

作品

3 个答案:

答案 0 :(得分:2)

这不起作用,因为angular expressionsjavascript expressions不完全相同。在您的示例中,您尝试创建regular expression并对其进行评估。正如angular documentation angular expressions所述,不允许No RegExp Creation With Literal Notation。由于angularjs表达式为forgiving,因此不会抛出任何错误,但您的代码无法以静默方式工作

答案 1 :(得分:1)

为什么不创建一个过滤器?如上面的@AdityaSingh所述,角度表达式与JavaScript表达式不完全相同,这就是创建过滤器的原因。

JS:

{{notification.noti_val | stripSpaces}}

HTML:

var theCopy = Object.assign({}, theOriginal);

答案 2 :(得分:0)

仔细查看您的代码。

$scope.notification = 'ujjal saha&nbsp;share&nbsp;own&nbsp;wall';
$scope.notif = notification.noti_val.replace(/\&nb\s*sp;/g, '');

您有$scope.notification =但后来尝试修改notification.noti_val