2015-10-19 127 views
0

我正在使用<p>標記來顯示一組答案選項。每個選項都是可選的,它可以設置一個類並在單擊時運行一些功能。禁用ng單擊非按鈕元素

我想在選擇一個答案後禁用任何ng-click操作,並且$scope.question_checked === true。我試圖按照禁用按鈕的格式,但這與非按鈕元素不一樣。

  <p 
       ng-repeat="c in choices track by ($index+1)" 
       ng-click="question_checked || c.selected = !c.selected; makeSelection($index+1, this)" 
       class="choice" 
       ng-class="{'selected': c.selected==true}" 
       ng-disabled="question_checked"> 

       {{letters[$index]}}) {{c.choice}} 

      </p> 

如何禁用對ng-click,例如p元素?

它是如何目前,我得到的錯誤:

Error: [$parse:lval] Trying to assing a value to a non l-value

這是當我在ng-clickc.selected = !c.selected;與其他功能一起。

+0

爲什麼不使用錨標籤而不是段落標籤?你可以用任何你想要的方式來設計它的樣式...... – Makoto

+0

@Growler,例如,如果你有5個選擇的問題,並且用戶選擇任何一個選項,那麼所有其他選項都需要禁用狀態。對? –

回答

0
<p ng-repeat="c in choices track by ($index+1)" 
    ng-init="question_checked = false" 
    ng-click="(!question_checked ? makeSelection($index+1, this) : return); question_checked = true" 
    class="choice" 
    ng-class="{'selected': c.selected==true}"> 

     {{letters[$index]}}) {{c.choice}} 

</p> 

啓動ng-repeat子作用域變量false作爲ng-init="question_checked = false"

如果question_checked == false然後makeSelection()電話如果不相等則什麼也不會發生只是一個returnquestion_checked後分配到真正爲question_checked = true

ng-click="(!question_checked ? makeSelection($index+1, this) : return); question_checked = true" 

我們在這裏不需要ng-disabled

+0

你刪除了'c.selected =!c.selected;',這是我如何爲'p'標記設置'ng-class' – Growler

+0

刪除'ng-init',然後用'c代替所有'question_checked' .selected'我無法看到'question_checked'的任何重要。 –