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
服务)