大佬教程收集整理的这篇文章主要介绍了创建一个通用的angularjs listController,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个简单的通用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()或类似的东西,但感觉太像黑客了,而且因为我是棱角分明的新手,我认为这对于像这个..
有小费吗?
对于上面的示例,通用控制器由“PeopleController”和“CarController”子类化.在控制器代码的开头,每个控制器代码都会执行以下操作:
controller('PeopleController','peopleservice',peopleservicE) { angular.extend(this,$controller('listController',{$scope: $scope,functions:{ add: peopleservice.addPerson,remove: peopleservice.removePerson,[...] }})); $scope.people = $scope.itemList; }
以上是大佬教程为你收集整理的创建一个通用的angularjs listController全部内容,希望文章能够帮你解决创建一个通用的angularjs listController所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。