2015-05-14 92 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