AngularJS-ng禁用指令行为怪异
在我的angular项目中,我使用了几个模态,在每个模态中,我使用的是带有AngularJS-ng禁用指令行为怪异,angularjs,Angularjs,在我的angular项目中,我使用了几个模态,在每个模态中,我使用的是带有ng disabled指令的按钮,每个模态都有自己的控制器 问题是,当我调试代码时,我可以看到当我打开一个模式时,调试器在代码中的所有ng disabled指令上运行,尽管它应该只在我使用的当前模式中的ng disabled函数上运行 在每个ng disabled上,我在自己的控制器中运行一些验证功能, 像ng disabled='somefunction()' 控制器中的somefunction()是somefuncti
ng disabled
指令的按钮,每个模态都有自己的控制器
问题是,当我调试代码时,我可以看到当我打开一个模式时,调试器在代码中的所有ng disabled
指令上运行,尽管它应该只在我使用的当前模式中的ng disabled
函数上运行
在每个ng disabled
上,我在自己的控制器中运行一些验证功能,
像ng disabled='somefunction()'
控制器中的somefunction()
是somefunction()=x | | y代码>
我错过什么了吗
控制器:
app.controller('NewHolidayModalController', function ($scope, close, HolidaysService) {
var centerList = $scope.$parent.$$childHead.centers;
var currCenterDN = $scope.$parent.$$childHead.currentCenter.DN;
var indexOfCurrentCenter = _.indexOf(_.pluck(centerList, 'DN'), currCenterDN);
centerList[indexOfCurrentCenter].ticked = true;
var selectedDNs;
$scope.dt = k = new Date();
$scope.close = function (result) {
centerList[indexOfCurrentCenter].ticked = false;
close(result, 500);
};
$scope.conditionsForSendNewHoliday = function () {
selectedDNs = _.select(centerList, { ticked: true });
return (($scope.starttime >= $scope.endtime) || ($scope.dt < k) || (angular.isDate($scope.dt) == false) || (angular.isDate($scope.starttime) == false) || (angular.isDate($scope.endtime) == false) || ($scope.HolidayName.length == 0) || (selectedDNs.length == 0));
};
$scope.addHoliday = function () {
holiday = HolidaysService.formatDateAndTime($scope);
for (i = 0; i < selectedDNs.length; i++)
{
newHoliday = { DN: selectedDNs[i].DN, HolidayName: $scope.HolidayName, HolidayDate: holiday.Date, BeginHour: holiday.start, EndHour: holiday.end }
HolidaysService.addHoliday(newHoliday)
.success(function (data, status, headers, config) {
if ((_.select($scope.$parent.$$childHead.holidays, { BeginHour: data.BeginHour }).length == 0) && (_.select($scope.$parent.$$childHead.holidays, { EndHour: data.EndHour }).length == 0) && (_.select($scope.$parent.$$childHead.holidays, { HolidayDate: data.HolidayDate }).length == 0) && (_.select($scope.$parent.$$childHead.holidays, { EndHour: data.EndHour }).length == 0) && (_.select($scope.$parent.$$childHead.holidays, { HolidayName: data.HolidayName }).length == 0))
$scope.$parent.$$childHead.holidays.push(data);
centerList[indexOfCurrentCenter].ticked = false;
alert("holiday was created");
})
.error(function (data, status, headers, config) {
if (status == 409)
alert("Holiday " + data.HolidayName + " Cannot be created for " + data.DN + " BECAUSE OF OVERLAPPED HOLIDAYS.")
})
}
}
app.controller('NewHolidayModalController',函数($scope,close,HolidaysService){
var centerList=$scope.$parent.$$childHead.centers;
var currCenterDN=$scope.$parent.$$childHead.currentCenter.DN;
var indexOfCurrentCenter=u0.indexOf(0.pull(centerList,'DN'),currCenterDN);
中心列表[indexOfCurrentCenter]。勾选=true;
var选择dns;
$scope.dt=k=新日期();
$scope.close=函数(结果){
中心列表[indexOfCurrentCenter]。勾选=false;
关闭(结果为500);
};
$scope.conditionsForSendNewHoliday=函数(){
selectedDNs=uz.select(中心列表,{ticked:true});
return($scope.starttime>=$scope.endtime)| |($scope.dt
})
HTML:
&时代;
接近
发送
我应该添加另一个控制器和html吗?您可以添加一些代码示例吗?更好的是,您可以创建一个带有问题演示的plunkr吗?请添加一个plunkr()我不知道您使用的是哪种模态指令或方法,但根据我自己对其中一些模态指令或方法的经验,控制器是在加载模态的DOM之前初始化的,因此您的函数可能不会像预期的那样运行。
<div class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" ng-click="close(false)" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body">
<form>
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div isteven-multi-select
input-model="$parent.$$childHead.centers"
output-model="outputCenters"
button-label="Name"
item-label="Name (Route)"
tick-property="ticked"
max-labels="5" max-height="150px">
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="form-group">
<div class="input-group date">
<input ng-model="HolidayName" type="text" placeholder="Holiday Name" class="form-control">
<span class="input-group-addon">
<span class="glyphicon glyphicon-pencil"></span>
</span>
</div>
</div>
</div>
</div>
<div ng-controller="DatepickerCtrl">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<p class="input-group">
<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="$parent.dt" is-open="opened" min-date="minDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
</div>
</div>
</div>
<div class="row">
<div class='col-md-8 col-md-offset-2'>
<timepicker-pop input-time="starttime" class="input-group"
show-meridian='showMeridian'>
</timepicker-pop>
</div>
</div>
<div class="row">
<div class='col-md-8 col-md-offset-2'>
<timepicker-pop input-time="endtime" class="input-group"
show-meridian='showMeridian'>
</timepicker-pop>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" ng-click="close(false)" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" ng-click="addHoliday()" class="btn btn-primary" data-dismiss="modal" ng-disabled="conditionsForSendNewHoliday()">Send</button>
</div>
</div>
</div>