Javascript 基于数组中值的ngChange更新禁用ngOptions
我正在尝试在已选择选项后,禁用选择中的选项。这取决于与以下代码中所示的每个“cusomter_no”关联的“perf_no”。ngChange在更新模型的同时更新关联对象中的“disabled”值。debounce的ngModelOptions对我不起作用是否有办法在ngChange完成后进行回调,以更新该对象的“disabled”值?或者是一个更好的方法来实现这一点?提前感谢Javascript 基于数组中值的ngChange更新禁用ngOptions,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在尝试在已选择选项后,禁用选择中的选项。这取决于与以下代码中所示的每个“cusomter_no”关联的“perf_no”。ngChange在更新模型的同时更新关联对象中的“disabled”值。debounce的ngModelOptions对我不起作用是否有办法在ngChange完成后进行回调,以更新该对象的“disabled”值?或者是一个更好的方法来实现这一点?提前感谢 <div class="session-registrant-field field-dropdown
<div class="session-registrant-field field-dropdown">
<label for="">{{nameLbl}}</label>
<select
ng-model="affiliateSelected[cartPerf.perf_no][$index]"
ng-change="changedAffiliate(affiliateSelected, cartPerf.perf_no, $index, affiliateSelected[cartPerf.perf_no][$index].customer_no)"
ng-options="affiliate.fname + ' ' + affiliate.lname disable when affiliate.disabled for affiliate in affiliates | filter:cartPerf.perf_no | orderBy:affiliate.customer_no:true track by affiliate.customer_no"
required>
<option value="" disabled="">-- Select person --</option>
</select>
</div>
嗯,也许它不漂亮,但做它的工作():
这是基于这样一个事实,即changedAffiliate在被禁用后将额外运行1次 嗯,也许它不漂亮,但做它的工作(): 这是基于这样一个事实,即changedAffiliate在被禁用后将额外运行1次
$scope.affiliates = [
{"id":"1","perf_no":"154","perf_dt":"2017-09-18T10:00:00","customer_no":"-10003","fname":"","lname":"Add New Child","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"Y","ask_next_grade":"Y","ask_email":"N","bdatereq":"Y","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10003"},
{"id":"2","perf_no":"154","perf_dt":"2017-09-18T10:00:00","customer_no":"-10002","fname":"","lname":"Add New Adult","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"Y","ask_next_grade":"Y","ask_email":"N","bdatereq":"Y","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10002"},
{"id":"3","perf_no":"154","perf_dt":"2017-09-18T10:00:00","customer_no":"2762","fname":"Ryan","lname":"Jones","age":"22","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"N","ask_next_grade":"N","ask_email":"Y","birthdate":"07\/13\/1995","bdatereq":"Y","eaddress":"","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10003"},
{"id":"4","perf_no":"154","perf_dt":"2017-09-18T10:00:00","customer_no":"2700","fname":"John","lname":"Doe","age":"","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"N","ask_next_grade":"N","ask_email":"Y","birthdate":"02\/22\/1988","bdatereq":"Y","eaddress":"","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10003"},
{"id":"5","perf_no":"154","perf_dt":"2017-09-18T10:00:00","customer_no":"2701","fname":"Rick","lname":"Deckard","age":"","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"N","ask_next_grade":"N","ask_email":"Y","birthdate":"02\/22\/1988","bdatereq":"Y","eaddress":"","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10002"},
{"id":"1","perf_no":"93","perf_dt":"2017-09-18T10:00:00","customer_no":"-10003","fname":"","lname":"Add New Child","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"Y","ask_next_grade":"Y","ask_email":"N","bdatereq":"Y","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10003"},
{"id":"2","perf_no":"93","perf_dt":"2017-09-18T10:00:00","customer_no":"-10002","fname":"","lname":"Add New Adult","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"Y","ask_next_grade":"Y","ask_email":"N","bdatereq":"Y","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10002"},
{"id":"3","perf_no":"93","perf_dt":"2017-09-18T10:00:00","customer_no":"2762","fname":"Ryan","lname":"Jones","age":"22","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"N","ask_next_grade":"N","ask_email":"Y","birthdate":"07\/13\/1995","bdatereq":"Y","eaddress":"","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10003"},
{"id":"4","perf_no":"93","perf_dt":"2017-09-18T10:00:00","customer_no":"2700","fname":"John","lname":"Doe","age":"","validation_pass_age":"Y","validation_pass_prereq":"Y","ask_birthdate":"Y","ask_current_grade":"N","ask_next_grade":"N","ask_email":"Y","birthdate":"02\/22\/1988","bdatereq":"Y","eaddress":"","age_validation_ind":"Y","min_age":"10","max_age":"25","rel_type_id":"10003"}
]
$scope.changedAffiliate = function(selectedItem, cartPerfNo, index, affiliateCustomer_no) {
$.each($scope.affiliates, function(i) {
if(this.perf_no === cartPerfNo && this.customer_no === affiliateCustomer_no){
this['disabled'] = true;
}
});
}
$scope.getDisableCondition = function(affiliate, cartPerfNo, index){
$.each($scope.affiliates, function(i) {
if(this.disabled === true){
console.log(this);
return affiliate.customer_no === this.customer_no;
}
if(this.disabled === false || this.disabled === undefined){
return false;
}
//console.log(this);
});
}
$scope.passMe;
$scope.changedAffiliate = function(selectedItem, cartPerfNo, index, affiliateCustomer_no) {
if ($scope.passMe) {
$scope.affiliates.forEach((aff)=>{
if (aff.perf_no == $scope.passMe[0] && aff.customer_no == $scope.passMe[2]) {
selectedItem[$scope.passMe[0]][ $scope.passMe[1]] = aff
}
})
$scope.passMe = null;
}
$scope.passMe = [cartPerfNo,index,affiliateCustomer_no]
$.each($scope.affiliates, function(i) {
if(this.perf_no === cartPerfNo && this.customer_no === affiliateCustomer_no){
this['disabled'] = true;
}
});
}