【发布时间】:2015-08-27 22:27:53
【问题描述】:
我在 bootstrap 的手风琴控件标题中使用了一个复选框,但模型只会在第一次单击时更新。这是手风琴的 HTML:
<accordion ng-repeat="timesheet in timesheets">
<accordion-group>
<accordion-heading>
Title
<input type="checkbox" ng-model="approvals.rejected" ng-click="approvals.timesheetChecked($event)"/>
</accordion-heading>
</accordion-group>
</accordion>
点击方法在我的打字稿控制器中:
timesheetChecked($event: Event) {
$event.stopPropagation();
$event.preventDefault();
}
如果我只是单独使用 stopPropagation() 方法,它会正确更新模型并选中复选框,但是,它会刷新页面。 preventDefault() 方法阻止了这种情况的发生,但随后它只会更新一次模型而不选中复选框。
我已经尝试使用 ng-bind,它实际上会正确更新模型,但不会将复选框更改为选中。
如果我在手风琴之外使用复选框,它会按预期工作,我对此没有任何问题。我不确定我在这里做错了什么?
【问题讨论】:
-
我很好奇,
ng-repeat="timesheet in timesheets"的目的是什么? -
这个系统的用户每周都有一个时间表。每周,用户都需要输入他们在工作中的工作时间,以便他们的经理可以批准他们所做的工作。
-
我的错,让我换个说法,如果你永远不会像
timesheet.something那样使用timesheet,为什么还要打电话给ng-repeat="timesheet in timesheets"?我可能只是错过了一些东西。 -
哎呀!抱歉,这里误会了。我确实在我使用的实际代码中使用了 timesheet 对象,但我只是将 sn-p 保持在最低限度,因为其他东西是无关紧要的。
标签: angularjs checkbox typescript accordion angular-ui