简体   繁体   English

控制器不算作功能

[英]Controller isn't counted as a function

I have many different controllers throughout this project and all of them are declared the same way. 在这个项目中,我有许多不同的控制器,而且所有控制器的声明方式都相同。 This one now isn't getting called/giving an error and I have no clue why. 现在这没有被调用/给出错误,我也不知道为什么。 I've looked through it and it all looks right to me. 我已经看过了,对我来说一切都很好。

I think it's probably some syntax error I'm not seeing. 我认为这可能是我没有看到的某些语法错误。 If its something else please tell me. 如果还有其他事情,请告诉我。 I'm trying to learn angular and everything helps. 我正在尝试学习角度知识,一切都有帮助。 Also if you need anything else just tell me. 另外,如果您还有其他需要,请告诉我。

I've made sure its not that the app.js name got changed and been looking for missing syntax but can't find anything. 我已经确定不是app.js名称被更改,并且一直在寻找缺少的语法,但是找不到任何东西。

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

company-department-controller.js company-department-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 _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 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'
        };
    });

Outside of a naming issue with the controller(which I can't see), I would imagine your issue dealing with the company-department-controller.js not being loaded. 除了控制器的命名问题(我看不到)之外,我可以想象您处理Company-department-controller.js的问题未加载。

In setting up your angular project, I would suggest that you follow this angular styleguide . 在设置角度项目时,我建议您遵循此角度样式指南 It has been very helpful to me in creating a well structured project. 这对我创建一个结构良好的项目非常有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM