Javascript lf.selected=[]; //创建一个函数以检查中心是否在阵列中 self.contains=函数(中心){ //参考我们的数据 var data=self.userCenters.data; //如果我们有任何数据 如果(数据){ //检查我们的中心是否在阵列中 返回arrayService.indexOfByKey(数据'id',center.id)>-1?true:false; } }; //将当前中心添加到用户 self.add=函数(e,中心){ //停止传播 修改(e,居中,真); }; //从用户中删除当前中心 self.remove=功能(e,中心){ //停止传播 修改(e,居中,假); }; //选择方法 self.select=功能(中心){ //修改我们的数组 arrayService.modify(自选,居中); //分配我们的变量 self.canAdd=searchArray(self.userCenters.data,self.selected,false); self.canRemove=searchArray(self.userCenters.data,self.selected,true); }; //检查是否选中了该行 self.isSelected=功能(中心){ //如果项目在数组中,则返回true 返回(arrayService.indexOf(自选,居中)>-1); }; //用于检查所选项目是否都处于相同状态的专用方法 var searchArray=函数(arrayToCheck、arrayToCompare、contains){ //循环检查要检查的项目 对于(变量i=0;i-1; 如果(找到!=包含) 返回false; } 返回true; }; //处理添加/删除或用户中心的专用方法 var modify=功能(e、中心、添加){ //停止传播 e、 停止传播(); //如果我们有索引 如果(中心类型!==“未定义”){ //创建一个列表 var列表=[]; //把我们的中心列入名单 列表。推送(中间); //打电话 modifyUserCenters(list,userId,adding).then(function(){},function(error){ //显示我们的错误 self.error=错误; }); //如果我们的用户中心还没有,就推到用户中心 arrayService.modify(self.userCenters.data,center); } }; }]);

Javascript lf.selected=[]; //创建一个函数以检查中心是否在阵列中 self.contains=函数(中心){ //参考我们的数据 var data=self.userCenters.data; //如果我们有任何数据 如果(数据){ //检查我们的中心是否在阵列中 返回arrayService.indexOfByKey(数据'id',center.id)>-1?true:false; } }; //将当前中心添加到用户 self.add=函数(e,中心){ //停止传播 修改(e,居中,真); }; //从用户中删除当前中心 self.remove=功能(e,中心){ //停止传播 修改(e,居中,假); }; //选择方法 self.select=功能(中心){ //修改我们的数组 arrayService.modify(自选,居中); //分配我们的变量 self.canAdd=searchArray(self.userCenters.data,self.selected,false); self.canRemove=searchArray(self.userCenters.data,self.selected,true); }; //检查是否选中了该行 self.isSelected=功能(中心){ //如果项目在数组中,则返回true 返回(arrayService.indexOf(自选,居中)>-1); }; //用于检查所选项目是否都处于相同状态的专用方法 var searchArray=函数(arrayToCheck、arrayToCompare、contains){ //循环检查要检查的项目 对于(变量i=0;i-1; 如果(找到!=包含) 返回false; } 返回true; }; //处理添加/删除或用户中心的专用方法 var modify=功能(e、中心、添加){ //停止传播 e、 停止传播(); //如果我们有索引 如果(中心类型!==“未定义”){ //创建一个列表 var列表=[]; //把我们的中心列入名单 列表。推送(中间); //打电话 modifyUserCenters(list,userId,adding).then(function(){},function(error){ //显示我们的错误 self.error=错误; }); //如果我们的用户中心还没有,就推到用户中心 arrayService.modify(self.userCenters.data,center); } }; }]);,javascript,angularjs,inheritance,Javascript,Angularjs,Inheritance,现在有明显的区别,但同时也有很多相似之处。由于我不是JavaSript大师,像原型继承这样的事情对我来说并没有任何意义 我看到有人问我这个问题: 这似乎与我想要的相似,但后来我偶然发现了以下两种方法: 这就是我开始感到困惑的地方。 在我的例子中,您可以看到,我可能会有类似的方法调用,并且会有一些共享的变量和函数。我有大约5个在设计上相似的控制器,我可以看到,如果我解决了这个问题,那么我也将有一些用于创建/编辑控制器 谁能给我一个外行,一个帮手 .controller('CompaniesCo

现在有明显的区别,但同时也有很多相似之处。由于我不是JavaSript大师,像原型继承这样的事情对我来说并没有任何意义

我看到有人问我这个问题:

这似乎与我想要的相似,但后来我偶然发现了以下两种方法:

这就是我开始感到困惑的地方。 在我的例子中,您可以看到,我可能会有类似的方法调用,并且会有一些共享的变量和函数。我有大约5个在设计上相似的控制器,我可以看到,如果我解决了这个问题,那么我也将有一些用于创建/编辑控制器

谁能给我一个外行,一个帮手

.controller('CompaniesController', ['$state', '$filter', 'ArrayService', 'CompanyService', 'toastr', 'companies', 'roles', function ($state, $filter, arrayService, service, toastr, companies, roles) {

    // Assign this to a variable
    var self = this;

    // Get our companies
    self.companies = companies;

    // Our selected companies
    self.selected = [];
    self.send = {};
    self.delete = {};

    // Create our page sizes array
    self.pageSizes = [10, 20, 50, 100];

    // For filtering and sorting the table
    self.pageSize = self.pageSizes[0];
    self.predicate = 'email';
    self.reverse = false
    self.filter = '';

    // Select method
    self.select = function (company) {

        // Modify our array
        arrayService.modify(self.selected, company);

        // If our array is only 1
        if (self.selected.length === 1) {

            // Get the current selected company
            var current = self.selected[0];

            // Set our variables
            self.canHaveCenters = (current.role === 'Company');
            self.requiresConfirmation = (!current.emailConfirmed);

            // Else
        } else {

            // Reset our variables
            self.canHaveCenters = false;
            self.requiresConfirmation = false;
        }
    };

    // Check to see if the row is selected
    self.isSelected = function (company) {

        // If our item is in our array, return true
        return (arrayService.indexOf(self.selected, company) > -1);
    };

    // Change to the edit company state
    self.edit = function (e, company) {

        // Change our state
        changeState(e, company, 'saveCompany.edit');
    };

    // Change to the company centers state
    self.centers = function (e, company) {

        // Change our state
        changeState(e, company, 'saveCompany.centers');
    };

    // Deletes a company
    self.delete = function (e, company) {

        // Perform the delete
        recursion(e, company, service.delete, self.delete, '{0} has been deleted.', '{0} companies have been deleted.', true);
    };

    // Private recursion method
    var recursion = function (e, company, serviceCall, resultObject, singleMessage, multipleMessage, removeAfterExecution) {

        // Stop propagation
        e.stopPropagation();

        // If we have an index
        if (typeof company !== 'undefined') {

            // If our delete succeeded
            serviceCall(company.id).then(function () {

                // If we are to remove
                if (removeAfterExecution) {

                    // Remove the company from our array
                    self.companies.data.splice(index);
                }

                // Display a message
                toastr.success($filter('stringFormat')(singleMessage, company.email));
            });

            // Otherwise we have no index
        } else {

            // Create our counter
            var i = 0;

            // Create a variable to hold our errors
            var errors = [];

            // For each selected company
            for (i; i < self.selected.length; i++) {

                // Get our index
                var index = self.selected[i];

                // Get the current company
                var company = self.companies.data[index];

                // If we have a result
                serviceCall(company.id).then(function () {

                    // If we are to remove
                    if (removeAfterExecution) {

                        // Remove the company from our array
                        self.companies.data.splice(index);
                    }

                    // If there is an error
                }, function (error) {

                    // Add to our errors array
                    errors.push(error);
                });
            }

            // If we have some errors
            if (errors.length > 0) {

                // Set our delete error
                self.error = errors.join();

                // Otherwise everything worked
            } else {

                // Display a message
                toastr.success($filter('stringFormat')(multipleMessage, i));
            }
        }
    };

    // Private state change method
    var changeState = function (e, company, state) {

        // Stop propagation
        e.stopPropagation();

        // If we have an index
        if (typeof company !== 'undefined') {

            // Change state
            $state.go(state, { companyId: company.id });

            // Otherwise we have no index
        } else {

            // If we have 1 selected item
            if (self.selected.length === 1) {

                // Get our index
                index = self.selected[0];

                // Get our company
                var company = self.companies.data[index];

                // Change state
                $state.go(state, { companyId: company.id });
            }
        }
    }
}]);
.controller('UserCentersController', ['$stateParams', 'ArrayService', 'CenterService', 'centers', 'userCenters', function ($stateParams, arrayService, service, centers, userCenters) {

    var self = this;

    // Get our user Id
    var userId = $stateParams.userId;

    // Assign our centers
    self.centers = centers;
    self.userCenters = userCenters;

    // Create our page sizes array
    self.pageSizes = [10, 20, 50, 100];

    // For filtering and sorting the table
    self.pageSize = self.pageSizes[0];
    self.predicate = 'name';
    self.reverse = false;
    self.filter = '';
    self.selected = [];

    // Create a function to check if a center is in an array
    self.contains = function (center) {

        // Reference our data
        var data = self.userCenters.data;

        // If we have any data
        if (data) {

            // Check to see if our center is in the array
            return arrayService.indexOfByKey(data, 'id', center.id) > -1 ? true : false;
        }
    };

    // Adds the current center to the user
    self.add = function (e, center) {

        // Stop propagation
        modify(e, center, true);
    };

    // Removes the current center from the user
    self.remove = function (e, center) {

        // Stop propagation
        modify(e, center, false);
    };

    // Select method
    self.select = function (center) {

        // Modify our array
        arrayService.modify(self.selected, center);

        // Assign our variables
        self.canAdd = searchArray(self.userCenters.data, self.selected, false);
        self.canRemove = searchArray(self.userCenters.data, self.selected, true);
    };

    // Check to see if the row is selected
    self.isSelected = function (center) {

        // If our item is in our array, return true
        return (arrayService.indexOf(self.selected, center) > -1);
    };

    // Private method for checking if the selected items are all of the same state
    var searchArray = function (arrayToCheck, arrayToCompare, contains) {

        // Loop through the items to check
        for (var i = 0; i < arrayToCompare.length; i++) {

            // Get our current item
            var item = arrayToCompare[i];

            // See if our current id exis
            var found = arrayService.indexOfByKey(arrayToCheck, 'id', item.id) > -1;

            if (found != contains)
                return false;
        }

        return true;
    };

    // Private method for handling adding / removing or user centers
    var modify = function (e, center, adding) {

        // Stop propagation
        e.stopPropagation();

        // If we have an index
        if (typeof center !== 'undefined') {

            // Create a list
            var list = [];

            // Push our center into the list
            list.push(center);

            // Make our call
            service.modifyUserCenters(list, userId, adding).then(function () {}, function (error) {

                // Display our error
                self.error = error;
            });

            // Push to our user centers if it's not already there
            arrayService.modify(self.userCenters.data, center);
        }
    };
}]);