私はAngularJS、Ionic(v1)フレームワークを使用しています。モバイルアプリの画面が表示されると、チェックボックスがチェックされて&と表示され、ユーザーはチェックボックスをオンまたはオフにすることができます。チェックボックスは負荷が掛かってもチェックされますが、初めてチェックボックスをオフにすると、チェックボックスがオフになっていてもチェックボックスのステータス値は未定義です。これがチェックされた後、チェックボックスの値が真であるか偽であるかによって、ユーザがそれをチェックしたか、チェックを外したかによってうまく動作します。以下では、ネストされたng-repeatとチェックボックスを表示しているコードのhtmlセクションが表示されている場合です。また、表示できる複数のチェックボックスがあります。そのため、2番目のng-repeatを使用してチェックボックスのすべての値をロードします。 HTMLコードの下にコントローラのJavascript関数があります。Angularjsチェックボックスはonloadをチェックしましたが、ネストされたng-repeat内で最初にチェックをはずすと未定義となりました
togglegroup & isgroupshown関数は、ユーザーがExtrasの横にあるアイコンをクリックすると、チェックボックスを表示するかどうかを非表示にします。
HTML
<form name="list" class="list">
<div ng-repeat="(i, item) in menu_items track by $index">
<div class="item item-divider">
{{item.p_name}}
</div>
<select ng-show="item.Customizable == 1" ng-model="data.cmbIngredient[i]">
<option selected="selected" value="">Select the size</option>
<option ng-repeat="x in item.ProductSizes" value="{{x}}">
{{x.ProductName}}: €{{x.ProductPrice | number:2}}
</option>
</select>
<div>
{{item.p_description}}
</div>
<!-- if the Extras value equates to 1 then the checkbox is displayed-->
<div ng-show="item.Extras == 1">
<i ng-click="toggleGroup(item)" class="icon balanced icon" ng-class="isGroupShown(item) ? 'ion-minus' : 'ion-plus-round'"></i> Extras
<label ng-repeat="(j, ext) in item.ExtraDetails track by $index" class="checkbox" ng-show="isGroupShown(item)">
<input type="checkbox" ng-checked="1" ng-change="AddExtras(data.data[j].chkextras[i],item.p_id)" ng-model="data.data[j].chkextras[i]"> {{ext.CIngredientName}}
</label>
</div>
</div>
</form>
コントローラ機能
$scope.AddExtras=function(extraStatus,pid){
if(extraStatus == true){
//pass it to service
}
else if (extraStatus == false){
//pass it to a service
}
};
$scope.toggleGroup = function(group) {
if ($scope.isGroupShown(group)) {
$scope.shownGroup = null;
} else {
$scope.shownGroup = group;
}
};
$scope.isGroupShown = function(group) {
return $scope.shownGroup === group;
};
Yaありがとうございます。しかし、ng-checkedを使用しないと、チェックボックスのonloadでチェックされた状態は機能しません。チェックを使用する伝統的なHTMLの方法を試してみました。それについてのどんな考えですか?再度、感謝します! – Ritz
初期状態をチェックしたい場合は、 'ng-model'がtrueに評価されていることを確認する必要があります。つまり、この変数 'data.data [j] .chkextras [i]'が真であることを確認する必要があります。コントローラーで 'data.data [j] .chkextras [i]'をtrueに設定することができますか? – Wilt
@Ritzはそれがあなたのために働いたと聞いて嬉しいです。 – Wilt