Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了创建一个通用的angularjs listController大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Angular ui-router允许我解决我可以在控制器中使用的不同注入.

我创建了一个简单的通用ListController,在ui-router中我注入了一个对象,该对象包含特定于该特定视图的CRUD函数以及模板.

因此,举例来说,假设我有2个具有相同“crud”语法的服务:

addPerson(person,callBACk){}
deletePerson(person,callBACk){}
editPerson(person,callBACk){}
....
addCar(car,callBACk){}
deleteCar(car,callBACk){}
editCar(car,callBACk){}
....

我创建了一个映射对象,将这些服务的CRUD函数映射到我的通用控制器,该控制器通过ui.router注入.

GenericController:

controller('ListCtrl',['$scope','itemList','functions',function ($scope,itemList,functions) {
    $scope.itemList = itemList;

    $scope.addItem = function(){
        functions.add($scope.item,callBACk);
    }
    .....
}

路由器:

.state('app.people',{
            url: '/people',templateUrl: 'views/people.html',resolve: {
                    functions: ['People',function(PeoplE){
                        return {
                        add: People.createPerson,update: People.updatePerson,delete: People.deletePerson,getItemList: People.getPeopleList
                    }
                    }],itemList: ['$q','People',function($q,PeoplE){
                var deferred = $q.defer();
                    People.getPeopleList(function(resp,status){
                        deferred.resolve(resp);
                    });
                    return deferred.promise;
                }],},controller: 'GenericController'
        })

因此,您只需在其状态定义中注入不同的函数映射,就可以将它与汽车一起使用.

奇迹般有效.

但现在我希望能够在div中使用我的控制器,而不仅仅是在完整视图中.现在问题在于:

如果我使用Ng-controller指令,注入器将不知道提供什么作为’itemList’或’functions'(它是映射对象),但如果我通过$controller对象实例化它,那么它赢了’有自己的范围,我得到了一个

UnkNown provider: $scopeProvider <- $scope

因为它无法创建自己的子范围..
我想我可以通过$rootScope创建一个新的范围.$new()或类似的东西,但感觉太像黑客了,而且因为我是棱角分明的新手,我认为这对于像这个..

有小费吗?

解决方法

为了将来的参,我最终编写了一个通用控制器系统和微型专用控制器 that extend them.

对于上面的示例,通用控制器由“PeopleController”和“CarController”子类化.在控制器代码的开头,每个控制器代码都会执行以下操作:

controller('PeopleController','peopleservice',peopleservicE) {
angular.extend(this,$controller('listController',{$scope: $scope,functions:{

        add: peopleservice.addPerson,remove: peopleservice.removePerson,[...]

    }}));

    $scope.people = $scope.itemList;

}

所以现在我甚至可以在Ng-controller指令中自己实例化控制器,并且它们将使用通用控制器来处理所有CRUD方法.

@H_618_58@

大佬总结

以上是大佬教程为你收集整理的创建一个通用的angularjs listController全部内容,希望文章能够帮你解决创建一个通用的angularjs listController所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。