$ timeout不改变angularjs中的变量

时间:2015-05-14 10:14:25

标签: javascript html angularjs

我正在处理一个按钮,如果其上方的表单字段无效,则会在点击它时尝试摇动它。

这是我的控制器代码: -

if(valid){.. do valid stuff here ..}

else{
console.log(this.shakeNotValid);
        // SHAKE ANIMATION
        this.shakeNotValid = true;

        $timeout(function() {
            this.shakeNotValid = false;
        } , 500);
}

否则定义或分配this.shakeNotValid。

控制台线第一次返回未定义状态,然后按钮震动,但随后又一次又一次地让我恢复原状并且没有动摇。

在html中,我正在为这个按钮分配一个类: -

        <div ng-click="main.mClick()" 
        ng-class="{isDisabled: !main.isValidContact && main.showContactCard, 
        isShaking: main.shakeNotValid}">

我想要的是这个按钮可以多次摇动,直到用户点击所有内容都变为有效。

请帮助一下,谢谢!

1 个答案:

答案 0 :(得分:2)

我认为this中的this.shakeNotValid = truethis中的this.shakeNotValid = false是两个不同的对象。

如果我是你,我会尝试按照以下方式更改您的代码并尝试一下:

if(valid){.. do valid stuff here ..}

else {
        _this = this;  
        console.log(_this.shakeNotValid);
        // SHAKE ANIMATION
        _this.shakeNotValid = true;

        $timeout(function() {
            _this.shakeNotValid = false;
        } , 500);
}