Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 值更改时,嵌入在自定义指令中的Ng开关未得到评估_Javascript_Html_Angularjs_Angularjs Directive_Ng Switch - Fatal编程技术网

Javascript 值更改时,嵌入在自定义指令中的Ng开关未得到评估

Javascript 值更改时,嵌入在自定义指令中的Ng开关未得到评估,javascript,html,angularjs,angularjs-directive,ng-switch,Javascript,Html,Angularjs,Angularjs Directive,Ng Switch,我创建了一个基本上是可重用表单的自定义指令。表单的一部分是使用ng开关的错误消息显示: 遇到错误 验证 成功 在我的指令的控制器中,我定义了一个与服务器进行验证的函数: $scope.verify = function () { $scope.status = 'verifying'; socket.emit('verify', $scope.data, function(result) { $scope.status = result; }); }; 然后,此

我创建了一个基本上是可重用表单的自定义指令。表单的一部分是使用
ng开关的错误消息显示:


遇到错误
验证
成功
在我的指令的控制器中,我定义了一个与服务器进行验证的函数:

$scope.verify = function () {
   $scope.status = 'verifying';
   socket.emit('verify', $scope.data, function(result) {
     $scope.status = result;
   });
};
然后,此函数由输入框的模糊事件上的
链接
函数调用

我注意到的是,“验证”状态从未出现,但“错误”/“成功”状态工作正常。似乎AngularJS只是在我当前的指令完成处理之后才处理
ng开关
指令


我做错什么了吗?我是否有办法避开这种行为,以便显示验证状态?

在Angular完成
$digest
循环并呈现视图之前,变量正在更改。尝试通过
$timeout
异步调用
emit
,这将允许框架呈现当前视图,然后在数据加载完成后更新它:

$scope.verify = function () {
   function afterLoading(){
       socket.emit('verify', $scope.data, function(result) {
           $scope.status = result;
       });
   }
   $scope.status = 'verifying';
   $timeout(afterLoading, 0);
};
(还记得在控制器中插入
$timeout
服务)