実際のチェックボックスを非表示にし、実際のチェックボックスではなく拡張コンポーネントを表示するカスタム jquery-plugin があります。
このコードの
<label for="local">
<input type="checkbox" ng-model="value" ng-change="filterByCoursePlace('test')" name="local" id="local"><span>Local</span>
</label>
プラグインはこのコードを生成します (チェックボックスの上に div を追加します)
<label for="local">
<div class="jcf-class-ng-pristine jcf-class-ng-valid chk-area chk-unchecked chk-focus"><span></span></div>
<input type="checkbox" ng-model="value" ng-click="filterByCoursePlace('test')" name="local" id="local" class="ng-pristine ng-valid"><span>Local </span>
</label>
大きな四角は偽物 (ユーザーに表示される) で、小さな四角は本物です。実際のチェックボックスはユーザーには表示されません。
問題は次のとおりです。実際のものをクリックすると ng-change が機能しますが、偽物をクリックすると、実際のものもチェックされますが、偽の ng-change は機能しません。