$interpolate(”,false,”) 可以接受3个参数,接受第一个参数的值类型是字符串可以是表达式,例如:
$interpolate第一参数是字符串 可以放表达式,并返回一个函数;
根据例子说明,返回的函数如果newdata()参数为空,只显示监控的emailcon输入的新内容并不能显示{{emailname}}的值,
//如果要显示{{emailname}}的值,就写成newdata({emailname:$scope.emailname})或者newdata(scope)
<body ng-app="myApp"> <div ng-controller="run_email"> <p><input type="text" ng-model="emailname"></p> <p><textarea ng-model="emailcon"></textarea></p> <p>{{text}}</p> </div> </body>
angular.module('myApp',[]).controller('run_email',function($scope,$interpolate){ $scope.emailname='7713@qq.com'; //设置默认显示出的电子邮件 $scope.emailcon='{{emailname}}'; //电子邮件表达式 赋值给emailcon变量 $scope.$watch('emailcon',function(body,body1,scope){ //这里的body就是 {{emailname}}+即将输入的新值 if(body){ //这里始终都会是true,因为里面有表达式 var newdata=$interpolate(body); //$interpolate第一参数是字符串 可以解析表达式,并返回一个函数 $scope.text=newdata({emailname:$scope.emailname}); //如果newdata()参数为空,只显示监控的emailcon输入的新内容并不能显示{{emailname}}的值, //如果要显示{{emailname}}的值,就写成newdata({emailname:$scope.emailname})或者newdata(scope) } }); });

案例的效果就是,如果只修改电子邮件文本不会更新,但是修改了电子邮件,在输入邮件内容时,才会在文本处同时更新邮件地址和内容。所以触发的对象是邮件的内容。