我在名为ctrl.test的范围变量中的控制器中定义了$scope.$watch. $watch的回调函数在生产部署中使用正确的值(newVal)进行调用,但是当从Jasmine测试中调用时,将使用undefined进行调用.
直接访问ctrl.test确实会产生正确的值.
有人能对此有所启发吗?这是一个Plunk用来摆弄.
解决方法:
当使用Controller As模式时,请使用函数作为watch表达式.
更换:
$scope.$watch('ctrl.test', ...
带有:
$scope.$watch(function () {
return ctrl.test;
}, ...
新潮:http://plnkr.co/edit/4tb4nhjtdRtv8cLURWZg?p=preview
有关为什么这样的详细信息:https://*.com/a/25748208/2943490