Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-ng禁用指令行为怪异_Angularjs - Fatal编程技术网

AngularJS-ng禁用指令行为怪异

AngularJS-ng禁用指令行为怪异,angularjs,Angularjs,在我的angular项目中,我使用了几个模态,在每个模态中,我使用的是带有ng disabled指令的按钮,每个模态都有自己的控制器 问题是,当我调试代码时,我可以看到当我打开一个模式时,调试器在代码中的所有ng disabled指令上运行,尽管它应该只在我使用的当前模式中的ng disabled函数上运行 在每个ng disabled上,我在自己的控制器中运行一些验证功能, 像ng disabled='somefunction()' 控制器中的somefunction()是somefuncti

在我的angular项目中,我使用了几个模态,在每个模态中,我使用的是带有
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">&times;</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>