创建通用的 angularjs listController

2023-12-12

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 注入的。

通用控制器:

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

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

router:

        .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 对象实例化它,那么它就会“ t 有自己的范围,我得到一个

Unknown provider: $scopeProvider <- $scope

因为它无法创建自己的子作用域.. 我想我可以通过 $rootScope.$new() 或类似的东西创建一个新的作用域,但这感觉太像黑客攻击了,而且由于我是角度新手,我认为这对于类似的东西可能是一个糟糕的方法这..

有小费吗?


为了将来的参考,我最终编写了一个通用控制器和微型专用控制器的系统延伸它们.

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

controller('PeopleController', ['$scope', 'peopleService', function ($scope, peopleService) {
angular.extend(this, $controller('listController', {$scope: $scope, functions:{

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

    }}));

    $scope.people = $scope.itemList;

}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建通用的 angularjs listController 的相关文章

  • Angular 中控制器之间的通信

    我熟悉以下实现控制器之间通信的方法 还有其他人吗 有更好的方法 最佳实践吗 broadcast emit controller Parent function scope scope broadcast SomethingHappened
  • 嵌套 ng 网格?

    我们可以制作一个嵌套的 ng grid 像这样的事情 有可能吗 这是笨蛋 http plnkr co edit hYuFfxLR38LA0clIkF48 p preview http plnkr co edit hYuFfxLR38LA0c
  • 角度观察周期或摘要周期完成时如何调用函数

    在 Angular 完成所有监视周期后 有什么方法可以调用 Angular 中的自定义函数 要求 我的控制器内有多种手表功能 现在我只想在所有手表函数都由角度执行后才执行函数 摘要完成后 有几种方法可以注册回调 Using postDige
  • 如何将除 Web API 之外的所有内容路由到 /index.html

    我一直在研究一个AngularJS项目 在 ASP NET MVC 内部使用 Web API 除非您尝试直接访问有角度的路由 URL 或刷新页面 否则它效果很好 我认为这将是我可以处理的事情 而不是胡闹服务器配置MVC的路由引擎 当前的We
  • Ionic 3 更新后 WebpackJsonp 丢失

    我最近从 2 升级到 ionic 3 我可以为 iOS 构建应用程序 但 ionic 服务现在失败并出现以下错误 在为 iOS 构建之前 我必须手动将 main prod ts 和 main dev ts 替换为 main ts 您需要更多
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la
  • 标头和 cookie 中的 CSRF 令牌在请求中不匹配

    我正在实现一个无状态 API 我的组织表示我需要防止 CSRF 攻击 我在网上找到了这个人的解决方案 并决定尝试实施仅客户端的方法 http blog jdriven com 2014 10 stateless spring securit
  • 在 Protractor / Webdriver 中等待页面重定向

    我有一个测试 单击按钮并重定向到用户仪表板 当发生这种情况时 Webdriver 返回 javascript error document unloaded while waiting for result 为了解决这个问题 我插入brow
  • AngularJS 和 Apiary.IO - 无法读取任何响应标头?

    我使用 Apiary io 模拟我的 API 但不知怎的 我无法使用 angularJS 从响应对象中读取任何标头 我确信我至少通过检查 firebug 正确设置了 Content Type application json Angular
  • Angular JS,量角器定位器,获取元素的直接子元素

    我有一个网格 我想从中选择所有行 但不选择行内的任何元素 这些行只是 div 没有类等 类似这样 为简洁起见 删除了内部内容 div class grid div div div div div div div div div div di
  • 从 Angular-ui 引导日期选择器中删除周列和按钮

    我在用Angular UI Bootstrap 日期选择器 http angular ui github io bootstrap datepicker 现在我需要从日期选择器中删除 week 列和周按钮 我的应用程序的多种形式都使用了这个
  • 如何延迟 AngularJS 应用程序初始化?

    我有一些数据正在后台异步处理 并且希望延迟整个 AngularJS 应用程序的初始化 直到完成 BackgroundData initialized 是一个 Q 承诺 所以像这样 BackgroundData initialized the
  • AngularJS:选择非 2 路绑定到模型

    我正在使用选择来显示客户名称 用户应该能够选择现有客户端 然后更新范围属性 控制器 初始化 首选 if scope clients length gt 0 scope existingClient scope clients 0 View
  • Nervgh Angular 文件上传 - 如何限制文件格式为 jpeg 和 png?

    我正在升级使用 nv file select 指令的应用程序 我不确定如何限制支持上传的文件格式 您想要按照中所述使用过滤器文档 https github com nervgh angular file upload wiki Module
  • 如何在 ngRepeat 中突出显示选定的行?

    我找不到可以帮助我解决这个简单问题的东西 在角度 比较时所有答案都与导航栏相关 正在根据位置路径进行 我使用列表和构建了一个动态表ngRepeat 当我单击一行时 我尝试为该行分配一个选定的 css 类 以突出显示该行已被用户选择的事实 并
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • AngularJS with Grunt - 连接到另一台服务器

    我使用 grunt bower 和 yeoman 创建了一个 AngularJS 应用程序 我猜想 Gruntfile js 在 2014 年 1 月之后发生了变化 不确定 这是我的gruntfile js Generated on 201
  • 如何在 ng-repeat 中使用 $index 来启用类并显示 DIV?

    我有一套 li 元素 ul li a href href ABC a li li a href href DEF a li li a href href A index a li ul li
  • 将占位符绑定到模型会导致 ng-change 在 IE 中加载时执行

    使用 angularjs 如果我将输入的占位符绑定到其模型 则当文档在 IE 中加载时会触发更改事件 这似乎不正确 我在其他浏览器中没有看到这种行为 JSFiddle http jsfiddle net VxBNW 6 Html div d
  • 角度 ng-repeat 根据条件添加样式

    我在 div 列表上使用 ng repeat 并且在渲染此 div 的 json 中手动添加项目 我需要定位我在 json 中添加的最后一个 div 它会自动在屏幕上渲染 即 couse 光标所在的位置 其余部分保持在相同位置 但没有给出渲

随机推荐

  • Objective-C:查找字符串中的数字

    我有一个包含单词和数字的字符串 如何从字符串中提取该数字 NSString str This is my string 1234 我希望能够将 1234 作为 int 去掉 每次我搜索该字符串时 该字符串都会有不同的数字和单词 Ideas
  • JavaScript - 获取图像特定区域的平均颜色

    我需要使用以下命令从图像的矩形区域获取平均颜色JavaScript 我尝试使用tracking js但它不允许指定区域而不是单个像素 如果您需要获取单个像素的平均颜色 而不是矩形区域的颜色 请看一下另一个问题 鼠标悬停时从画布获取像素颜色
  • 为什么 Content-Disposition 标头在 IE 8 中不起作用?

    我正在尝试将文本文件 CSV 流式传输到响应 并且以下代码在 Firefox 3 中完美运行 但是当我使用 IE 时 它看起来想要下载实际的 aspx 页面 并抱怨该文件内容与文件扩展名或类型不匹配 如果我随后选择下载该文件 它会正确下载
  • 无法在“C”程序中打印欧元符号

    我无法打印欧元符号 我正在使用的程序如下 我已将字符集设置为代码页 1250其中 0x80 代表欧元符号 Program include
  • Android:旋转器上的 getSelectedItem 问题

    我有一个Spinner 并将所选项目放入邮件正文中 这是我的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedInstance
  • 文本不透明度渐变

    我希望使文本看起来在边缘淡出 这是我到目前为止所拥有的 struct ContentView View var body some View ZStack Color red Text Hello world blendMode lumin
  • Java 球衣 RESTful Web 服务请求

    我一直在关注有关宁静服务的教程 效果很好 不过 有些事情我还不太明白 它看起来是这样的 Path hello public class Hello This method is called if TEXT PLAIN is request
  • ftell/fseek 与 /sys/class 文件中实际可读数据长度不同

    嵌入式Linux系统 ls al sys class xxxx r r r 4096 ftell lstat st size 返回 4096 fread fp 1 4096 buf 返回 3 实际上 使用vi打开文件只有3个字节 有什么问题
  • [NSManagedObjectContext删除:]:无法识别的选择器发送到实例

    核心数据让我心烦意乱 我正在删除旧数据并希望插入从服务器收到的新数据 现在删除部分给出了 sigabort NSManagedObjectContext删除 无法识别的选择器发送到实例0x522f550 2013 09 27 14 05 5
  • 使用Sinon的假定时器时setTimeout未触发

    我有一个类似于下图所示的测试 基本上我想测试特定方法是否被延迟 以下示例按预期工作 即调用解析方法并且测试通过 it should delay execution by 1 second function const clock sandb
  • 类型错误:不可散列的类型

    我正在尝试获取元组列表的列表 类似 1 0 2 0 3 0 1 1 2 1 3 1 我用了这个声明 set a b for a in range 3 for b in range 3 但这给了我一个错误 TypeError unhashab
  • 使用 C#/.Net 时只读如何影响目录?

    我发现我可以写入 例如 将文件复制到 只读目录 也就是说 一个目录 Attributes FileAttributes ReadOnly 我什至可以改变它的名字 我发现唯一不能做的就是删除它 这真的是唯一的事情吗 ReadOnly防止 ED
  • DataGrid 重新定位将新行添加到顶部

    在 DataGridview 中 空白行添加条目很方便 但当列表很大时很快就会丢失 您可以将其默认位置从 DataGrid 视图的底部更改为顶部吗 我很少用过DataGrid并且对其添加行的能力一无所知 但从 WPF MVVM 的角度来看
  • 发现:所需单位:Int - 如何纠正这个问题?

    scala gt class Rectangle Length Int Width Int def getLlength Int println Length def getWidth Int println Width
  • 如何为 ASP.NET MVC 上的 GET 和 POST 操作绑定字典类型参数

    我想定义一个显示标签和复选框列表的视图 用户可以更改复选框 然后发回 我在回传字典时遇到问题 也就是说 post方法的字典参数为null 以下是 GET 和 POST 操作的操作方法 public ActionResult MasterEd
  • MEF WPF - 通过插件取消 Application.Current.Shutdown()

    有什么办法可以取消 Application Current Shutdown 背景 我玩了一下 mef 并将一些插件添加到我的主应用程序中 如果有任何插件调用 Application Current Shutdown 我的主应用程序也关闭了
  • 使用 android TimerTask 和 Timer 防止最终用户操纵计时器

    如何确保一项应在 Android 操作系统上运行 x 时间的任务在该 x 时间段内运行 而无需用户操纵日期和时间 例如 如果我希望这个计时器持续运行 24 小时 然后通知用户 24 小时已经过去 即使手机关闭一小时 用户也会将其重新打开并将
  • MS SQL 时态表更新失败

    我找不到任何东西来解释为什么当调用一个 SP 来根据临时表上是否已存在记录进行插入或更新时 我得到 系统版本表上的数据修改失败 MYDB dbo TemporalExample 因为事务时间早于 受影响记录的周期开始时间 这意味着什么剂量
  • 如何让 Google Apps 脚本服务的剩余每日邮件配额持续工作?

    我做了一个关于谷歌应用程序脚本的项目 用于在发送表单响应后发送自动电子邮件 但是 当我使用以下命令检查剩余电子邮件的每日配额时MailApp getRemainingDailyQuota 方法中 配额响应随每个脚本执行而变化 所以我创建了另
  • 创建通用的 angularjs listController

    Angular ui router 允许我解决可以在控制器中使用的不同注入 我创建了一个简单的通用 ListController 并在 ui router 中注入一个对象 其中包含特定于该特定视图的 CRUD 函数以及模板 举例来说 假设我