2015-10-19 55 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'的任何重要。 –