AngularJS 重复元素 1 秒

AngularJS duplicated element for 1 second

我的登录表单包含一个用于显示错误消息的框

<div class="ui negative message" ng-if="vm.message != ''">
    <span ng-bind="vm.message"></span>
</div>

消息设置在我的控制器中

LoginService.checkUser(vm.credentials).then(function(res) {
    $rootScope.token = res.data.token;
    $state.go('home');
}, function(err) {
    vm.error = true;
    if(err.status == 401){
        vm.message = "Error !";
    }
});

我的问题是包含消息的 div 在单击登录按钮后的 1 秒内显示了 2 次。因此,在 0.5/1 秒内,我有 2 次相同的 div 和相同的消息。

用户看不到它说的是什么,但他可以看到闪烁的东西。

如何避免眨眼?

你的ng-if在你的HTML中不起作用,改成这样:

<div class="ui negative message" ng-if="vm.message">
  <span ng-bind="message"></span>
</div>

声明ng-if="vm.message != ''"没有隐藏导致闪烁的元素。您甚至可以在加载控制器时在控制器中声明 vm-message = null 以确保。

好的,这个错误有点愚蠢,是我没有显示的部分代码。

完整的登录功能是

    vm.error = false;
    if (vm.credentials.username == '' || vm.credentials.password == '') {
        vm.error = true;
        vm.message = "Required username+password";
        return;
    }
    vm.message = "" //HERE IS THE PROBLEM

    LoginService.checkUser(vm.credentials).then(function(res) {
        $rootScope.token = res.data.token;
        $state.go('home');
    }, function(err) {
        vm.error = true;
        if(err.status == 401){
            vm.message = "Error";
        }
    });

我在将消息设置为错误之前将其编辑为空。

我删除了这一行 vm.message = "",它现在工作正常