私は非常に新しい角度です:)。 ng-repeatによって構築された特定の値を持つ単純なイベントの1つのフォーム要素を追加したいと思います。これは、HTMLがどのように見えるかです:ng-repeat要素にイベントを追加する
<div class="labels">
<div class="checkbox-element" ng-repeat="suggestName in $ctrl.suggests" ng-click="$ctrl.toggleSelection(suggestName, 'suggestsSelection', this)">
<label>
<input type="checkbox" name="suggestsSelection[]"
class="hidden"
value="{{suggestName}}"
><span></span>{{suggestName}}
</label>
</div>
<div class="optionary hidden">
<br>
<div class="question__text">Any other?</div>
<label><input type="text"
ng-model="$ctrl.survey.suggest_other"
name="suggests_other1"></label><br>
</div>
</div>
そして、コントローラコード:私は必要なもの
vm.survey = {};
vm.suggests = ['quality', 'price', 'habbit', 'other'];
// selected
vm.survey.suggestsSelection = [];
// toggle selection for a given names
vm.toggleSelection = function toggleSelection(value, array, scope) {
var idx = vm.survey[array].indexOf(value);
// is currently selected
if (idx > -1) {
vm.survey[array].splice(idx, 1);
}
// is newly selected
else {
vm.survey[array].push(value);
}
};
は、クラス「optionary」とDIVから「隠された」クラスを切り替えますイベントを作成することです最後に作成されたチェックボックス(この場合は「その他」)をクリックしてください。他のチェックボックスをクリックしても、「オプション」のdivには影響しないはずです。
if(scope.$last){
$(scope).closest('.optionary').toggleClass('hidden');
}
または類似:
私のようないくつかの構成で試してみました。私は、トピックに近づくためにはどうすればいいのか分からない。あなたはNGリピートを見ることができるように
は以前のように、良い解決策が、aplyingのNG-repeatが出スロー後に '{{suggestName}}' の代わりにチェックボックスのラベルであるように思われます。どのように間違って行くことができますか? :) – Hub26
'value'プロパティを設定するべきではなく、' ng-model = "suggestName" 'を使うべきです。編集:あなたはそれで本当の価値を設定するつもりなら、 'ng-true-value'を使います。詳細については、こちらをご覧ください:https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D –
これは機能しません...この変更の後、オプションは表示されますが、それらをクリックすると変更されます値をtrue/falseに設定します。 – Hub26