控制器不计入功能

时间:2016-08-17 15:37:11

标签: javascript html angularjs controller

我在这个项目中有很多不同的控制器,并且所有控制器都以相同的方式声明。现在这个没有被调用/给出错误,我不知道为什么。我仔细研究了一下,这一切看起来都对我不错。

我认为这可能是我没有看到的一些语法错误。如果它的东西请告诉我。我正在努力学习角度,一切都有帮助。如果你还需要其他任何东西,请告诉我。

我已经确定app.js名称没有改变,并且一直在寻找缺少的语法但找不到任何内容。

https://docs.angularjs.org/error/ng/areq?p0=companyDepartmentController&p1=not%20a%20function,%20got%20undefined

公司部门-controller.js

app.controller('companyDepartmentController', ['$scope', '$timeout', 'companyService', function ($scope, $timeout, companyService) {

    /**
    * Create/Manage Company Departments & Shifts
    *
    */

    // INITIALIZE VARIABLES *********************************************************************************

    var vm = this;
    vm.Departments = [];
    vm.activeDepartment = {}
    vm.departmentBeforeEdit = {};
    vm.activeShift = {};

    vm.OffsetString = "";

    vm.SaveDepartmentSuccessMessage = null;
    vm.SaveDepartmentErrorMessage = null;

    // STARTUP **********************************************************************************************

    (vm.GetDepartments = function () {
        companyService.GetDepartmentsWithShiftInformation().success(function (data) {
            console.log('hi');
            for (i = 0; i < data.length; i++) {
                console.log(data[i])
            }
            vm.Departments = data;
            // for now we are limiting this to 1
            vm.activeDepartment = vm.Departments[0];
            vm.setTimeZoneOffsets(vm.activeDepartment);
        });
    })();

    // move to global location?  handle this better?
    (vm.findLocalOffsetString = function () {
        console.log('hi1');
        vm.OffsetString = moment(new Date()).format('ZZ');
    })();

    // $BROADCAST/$ON EVENTS ********************************************************************************



    // EVENTS ***********************************************************************************************

    vm.saveDepartment = function (department) {
        // new
        if (department.DepartmentID === 0 || typeof department.DepartmentID === 'undefined') {

        }
        // update
        else {
            companyService.UpdateDepartmentHeader(department).success(function (data) {
                vm.SaveDepartmentSuccessMessage = "Saved!";
                resetDepartmentMessage();
                department.InEdit = false
            });
        }
    };

    vm.editDepartment = function (department) {
        vm.activeDepartment = department;
        vm.departmentBeforeEdit = angular.copy(vm.activeDepartment);
        vm.activeDepartment.InEdit = true;
    };

    vm.cancelDepartmentEdit = function (department) {
        for (var i = 0; i < vm.Departments.length; i++) {
            if (department.DepartmentID === vm.Departments[i].DepartmentID) {
                vm.Departments[i] = vm.departmentBeforeEdit;
                vm.departmentBeforeEdit = {};
                vm.activeDepartment = vm.Departments[i];
                break;
            };
        };
    };

    vm.addShift = function () {
        if (!vm.activeDepartment) return;

        vm.activeShift = {
            DepartmentID: vm.activeDepartment.DepartmentID,
            StartTime: new Date(),
            LocalStartTime: new Date(new Date() + vm.OffsetString)
        };

        vm.activeShift.StartTime.setSeconds(0);
        vm.activeShift.LocalStartTime.setSeconds(0);
    };

    vm.deleteShift = function (shift) {
        if (!shift) return;
        if (confirm("Are you sure you want to delete the shift: " + shift.Name + "?")) {
            companyService.DeleteShift(shift).success(function () {
                angular.forEach(vm.activeDepartment.Shifts, function (c, i) {
                    if (c.ShiftID === shift.ShiftID) {
                        vm.activeDepartment.Shifts.splice(i, 1);
                    };
                });
            });
        };
    };

    vm.setTimeZoneOffsets = function (department) {
        if (!department || !department.Shifts || department.Shifts.length === 0) return;

        for (var i = 0; i < department.Shifts.length; i++) {
            department.Shifts[i].LocalStartTime = new Date(department.Shifts[i].StartTime + vm.OffsetString);
            department.Shifts[i].EndTime = moment(department.Shifts[i].StartTime).add(department.Shifts[i].Duration, 'hours').toDate()
        };
    };

    var fixTimezoneOnSave = function (shift) {
        shift.StartTime = new Date(shift.LocalStartTime).toLocaleString();
    };

    vm.setActiveShift = function (shift) {
        if (!shift) return;
        vm.activeShift = angular.copy(shift);
    };

    vm.saveShift = function (shift) {
        fixTimezoneOnSave(shift);
        // new shift
        if (shift.ShiftID === 0 || typeof shift.ShiftID === 'undefined') {
            companyService.AddShift(shift).success(function (data) {
                shift.ShiftID = data;
                vm.SaveDepartmentSuccessMessage = "Saved!";
                resetDepartmentMessage();
                getUpdatedShiftsAndInfo();
            }).error(function (e) {
                vm.SaveDepartmentErrorMessage = e.error;
                resetDepartmentMessage();
            });
        }
        // updating existing
        else {
            companyService.UpdateShift(shift).success(function (data) {
                vm.SaveDepartmentSuccessMessage = "Saved!";
                resetDepartmentMessage();
                getUpdatedShiftsAndInfo();
            }).error(function (e) {
                vm.SaveDepartmentErrorMessage = e.error;
                resetDepartmentMessage();
            });
        }
    }

    var getUpdatedShiftsAndInfo = function () {
        companyService.DepartmentAndShiftInformation(vm.activeDepartment.DepartmentID).success(function (data) {
            vm.activeDepartment.DepartmentShiftInformation = data.DepartmentShiftInformation;
            vm.activeDepartment.Shifts = data.Shifts;
            vm.setTimeZoneOffsets(vm.activeDepartment);
        });
    };

    var resetDepartmentMessage = function () {
        // clear error/success message if they have values still
        if (vm.SaveDepartmentSuccessMessage != null) {
            $timeout(function () { vm.SaveDepartmentSuccessMessage = null; }, 2000);
        }
        if (vm.SaveDepartmentErrorMessage != null) {
            $timeout(function () { vm.SaveDepartmentErrorMessage = null; }, 2000);
        }
    };

    // create controller object in console if we have logging turned on
    if (spectrum.LoggingEnabled) {
        spectrum.logController(vm);
    };

}]);

_CompanyDepartment.cshtml

<div class="container-fluid" data-ng-controller="companyDepartmentController as cd">
</div>

@section scripts {
    @Scripts.Render("~/bundles/companyDepartments")
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/angularjs")
}

app.js

var app = angular.module('app', ['angularFileUpload', 'ngSanitize', 'ui.mask', 'ui.select', 'ui.bootstrap', 'ui.bootstrap.tpls', 'angular.filter', 'smart-table', 'colorpicker.module'])
    .config(function ($httpProvider) {
        //make delete type json to facilitate passing object
        //to our generic method.
        $httpProvider.defaults.headers["delete"] = {
            'Content-Type': 'application/json;charset=utf-8'
        };
    });

1 个答案:

答案 0 :(得分:0)

除了控制器的命名问题(我看不到)之外,我想你处理公司部门 - controller.js的问题没有被加载。

在设置角度项目时,我建议您按照this angular styleguide进行操作。对我来说,创建一个结构合理的项目非常有帮助。