嵌入在自定义指令中的Ng-switch值更改时未得到评估

问题描述 投票:2回答:1

我创建了一个自定义指令,该指令基本上是可重用的形式。表单的一部分是使用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>&nbsp;</span>
</div>

在指令的控制器中,我定义了一个与服务器一起执行验证的功能:

$scope.verify = function () {
   $scope.status = 'verifying';
   socket.emit('verify', $scope.data, function(result) {
     $scope.status = result;
   });
};

然后在输入框发生模糊事件时,由link函数调用此函数。

我要注意的是,“验证中”状态从不显示,但是“错误” /“成功”状态可以正常工作。似乎只有在我当前的指令完成处理后,AngularJS才会处理ng-switch指令。

我在做错什么吗?我有办法解决此问题,以便显示验证状态吗?

javascript html angularjs angularjs-directive ng-switch
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.