我创建了一个自定义指令,该指令基本上是可重用的形式。表单的一部分是使用ng-switch
:
<div ng-switch="status">
<span ng-switch-when="Error" class="text-error">Error encountered</span>
<span ng-switch-when="Verifying" class="text-info">Verifying</span>
<span ng-switch-when="Success" class="text-success">Success</span>
<span ng-switch-default> </span>
</div>
在指令的控制器中,我定义了一个与服务器一起执行验证的功能:
$scope.verify = function () {
$scope.status = 'verifying';
socket.emit('verify', $scope.data, function(result) {
$scope.status = result;
});
};
然后在输入框发生模糊事件时,由link
函数调用此函数。
我要注意的是,“验证中”状态从不显示,但是“错误” /“成功”状态可以正常工作。似乎只有在我当前的指令完成处理后,AngularJS才会处理ng-switch
指令。
我在做错什么吗?我有办法解决此问题,以便显示验证状态吗?
该变量在Angular完成$digest
循环并渲染视图之前发生更改。尝试通过emit
异步调用$timeout
,这将允许框架呈现当前视图,然后在数据加载完成后进行更新: