2014-08-28 72 views
0

也許我只是沒有想直。我可以使用某種形式的角度ng-click和ng-disabled來啓用/禁用通過我的控制器的鏈接嗎?陣列爲空時的角度禁用按鈕

Fiddle here

see fiddle... 

在「做的東西的東西」,除非至少一個「東西」被選中按鈕不應該被啓用,也沒有任何動作應該是採取。當然,一旦檢查到物品,按鈕應該激活。

我越試圖解決這個問題,它就越複雜,我不禁想到我忽略了一些明顯的東西。

回答

4

因爲ng-disabled對於INPUT的。

這裏使用納克級是fiddle

<a ng-class="{'disabled': things.length==0}" ng-click="doStuff()">Do stuff to Thing(s)</a> 

$scope.doStuff = function(){ 
     if($scope.things.length==0) return; 
     console.log('Stuff has been done to things'); 
    } 
+0

我可以把它做一次,但是當我回到頁面時,按鈕被啓用,複選框沒有任何作用。 – DaveC426913 2014-08-28 20:51:13

+0

你的意思是?你能舉個例子嗎? – 2014-08-29 07:03:58

1

首先的一個例子,你需要的,如果你想要做NG-禁用的東西去掉周圍的測試卷曲。一般來說,你不需要使用原生的角度指令(除了ng-href ..)

之後,ng-disabled如果不在按鈕上不會阻止ng-click,所以你需要使用一個按鈕或使用這樣的syntaxe在NG-點擊:

ng-click="condition && doSomething()" 

這裏是一個工作示例,希望它會幫助你

http://jsfiddle.net/dxquye40/8/

+0

I.do.not。理解角度的花括號語法。有時它是雙重的,有時是單一的,有時根本沒有。我不知道他們中的任何一個是什麼意思。 – DaveC426913 2014-08-28 20:52:12

+0

這很簡單:)。雙花括號聲明爲angular來內容爲javascript的內容。你可以定義變量,調用函數... 在一個指令中,你不需要使用它們,因爲在$ parse服務中被調用。內容將在每次指令需要時插入。 此外,somple花括號用於定義一個JavaScript對象。當你聲明'ng-class =「{active:condition}」'你給一個具有活動屬性的文字對象。 – Polochon 2014-08-29 07:55:54

-1

如果你被允許使用jQuery然後你可以使用.removeClass(),就像我在這裏使用腳本一樣。

http://jsfiddle.net/kirdua/dxquye40/21/

code

+0

在Angular控制器中操作DOM並不被認爲是好的做法。唯一適合的地方是指令。 – 2014-08-28 18:42:38

0

退房在這個崗位ryeballer的回答是:Angular JS + Button should be enabled if at least one checkbox is checked how To do it?

提供應修改的plunker ryeballer通過在NG-禁用指令翻轉的條件:

ng-disabled="!isChecked()" 

這是一個調整後的重擊者: http://plnkr.co/edit/N0az5UeVH0VRlGK1ZwvC?p=preview

這看起來與您想要做的非常相似。

請記住ng-disabled指令似乎並不影響錨標籤。所以,如果可以的話,使用別的東西(比如一個按鈕元素)。 另外,請注意您的初始解決方案如何不利用Angulars數據綁定。不要在複選框上設置ng-click事件,只需通過ng-model指令告訴Angular該數據是什麼。讓Angular關心你在setThing()方法中獲得的東西。