2015-05-14 73 views
0

我正在使用一个按钮,如果上面的表单字段无效,就试图通过点击来改变它。

这里是我的控制器代码: -

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}"> 

我想的是,这个按钮可以撼动多次,直到所有的,当用户点击生效。

有些帮助,谢谢!

回答

2

我认为thisthis.shakeNotValid = truethisthis.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); 
} 
+0

谢谢! :)效果很好 –

+0

太棒了!你介意接受答案吗? – SkyWriter

+0

阅读关于'this'绑定可能也是有用的,因为它正是我们在这里所面对的情况:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/函数/绑定。它显示了这些问题也可以解决的方式,并更好地理解你的变体为什么不起作用。 – SkyWriter