AngularJS处理CRUD资源的“方式”是什么

随机位

我有兴趣将客户的许多“逻辑”从Rails路由转移到AngularJS。我对一个主题有些困惑,这就是联系。现在,我的确知道有多种方法可以解决此问题,但是AngularJS社区中处理URL的常见做法是处理资源的CRUD。想象一下,对于一名运动员,我们有一个如下所示的网址列出了所有运动员:

http://example.com/athletes

要查看单个运动员:

http://example.com/athletes/1

要编辑单个运动员:

http://example.com/athletes/1/edit

要创建新运动员:

http://example.com/athletes/new

在AngularJS中,重新路由到类似的URL以创建/编辑/更新是一种常见的做法吗?您是否只有一个URL可以在一个界面中处理所有CRUD类型的操作,而从不更改URL?如果要更改URL,是否可以通过ng-click进行处理?在click事件中,您是否会使用该$location对象来更改URL?我很希望能够阅读诸如此类的常见做法,但是很难在AngularJS上下文中找到有关它的最新文献。

** 注意 **

我完全明白,您仍然可以使用RESTful路由到后端,以便与服务器端资源进行交互。我的问题是,在客户端更新URL时建议使用哪种样式。您是否正在使用AngularJS对每个CRUD操作执行此操作?

德里克·辛奇利夫

我绝对会为每个操作建议单独的URL(以启用直接链接)。您建议的外观很好。

在AngularJS中,您可以将$route服务与ngView指令结合使用,以为每个操作加载适当的模板,并为您处理浏览器的位置和历史记录机制。

AngularJS教程的第7步提供了一个按我在此描述的方式使用视图,路由和模板的示例。以下是您的示例的简化版本:

定义路线

在您的主要应用程序脚本(例如app.js)中:

angular.module('AthletesApp', []).
  config(['$routeProvider', function($routeProvider, $locationProvider) {
  // Configure routes
  $routeProvider.
      when('/athletes', {templateUrl: 'partials/athletes-list.html',   controller: AthleteListCtrl}).
      when('/athletes/:athleteId', {templateUrl: 'partials/athlete-detail.html', controller: AthleteDetailCtrl}).
      when('/athletes/:athleteId/edit', {templateUrl: 'partials/athlete-edit.html', controller: AthleteEditCtrl}).
      when('/athletes/:athleteId/new', {templateUrl: 'partials/athlete-new.html', controller: AthleteNewCtrl}).
      otherwise({redirectTo: '/athletes'});
  // Enable 'HTML5 History API' mode for URLs.
  // Note this requires URL Rewriting on the server-side. Leave this
  // out to just use hash URLs `/#/athletes/1/edit`
  $locationProvider.html5Mode(true);
}]);

我们还为网址启用了“ HTML模式”,请参阅下面的注释。

2.ngView向您的HTML添加指令

在主index.html中,指定所选部分模板在整体布局中的位置:

<!doctype html>
<html ng-app="AthletesApp">
...
   <!-- Somewhere within the <body> tag: -->
   <div ng-view></div>
...
</html>

3.创建模板和控制器

然后,您为每个操作创建部分视图模板和匹配的控制器。例如,运动员详细视图:

partials / athelete-detail.html:

<div>
    ... Athete detail view here
</div>

sportsDetailCtrl.js:

angular.module('AthletesApp').controller('AtheleteDetailCtrl',
    function($scope, $routeParams) {
        $scope.athleteId = $routeParams.athleteId;
        // Load the athlete (e.g. using $resource) and add it
        // to the scope.
    }

您可以:athleteId通过该$routeParams服务访问route参数(在route配置中使用定义

4.添加链接

最后一步是在HTML中实际包含链接和按钮以进入不同的视图。只需使用标准HTML并指定URL,例如:

<a href="/athletes/{{athleteId}}/edit">Edit</a>

注意:标准网址与哈希网址

在不支持HTML5历史记录API的旧版浏览器中,您的网址看起来更像http://example.com/#/athleteshttp://example.com/#/athletes/1

$location服务(由自动使用$route)可以为您处理此问题,因此您可以在现代浏览器中获得漂亮的干净URL,而在旧版浏览器中可以回退到哈希URL。您仍然可以如上所述指定链接,$location并将为较旧的客户端重写它们。唯一的附加要求是您在服务器端配置URL重写,以便将所有URL都重写为应用程序的主index.html。有关更多详细信息,请参见AngularJS $ location指南

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以非幂等方式更新资源的最 RESTful 方式是什么?

来自分类Dev

Java处理闭包的方式是什么?

来自分类Dev

Rails处理多态关联的方式是什么?

来自分类Dev

处理异常的最佳方式是什么?

来自分类Dev

处理ElasticSearch的最Python方式是什么?

来自分类Dev

测试AngularJS指令的惯用方式是什么?

来自分类Dev

在URL中表示资源克隆操作的宁静方式是什么?

来自分类Dev

处理集合时,在EF 6中处理CRUD操作的正确方法是什么?

来自分类Dev

在JavaScript中处理非法参数的惯用方式是什么?

来自分类Dev

Python:处理两个列表的“ Pythonic”方式是什么?

来自分类Dev

当执行劣质的ReactiveCommands时,ReactiveUI处理异常的方式是什么?

来自分类Dev

Python:处理两个列表的“ Pythonic”方式是什么?

来自分类Dev

处理标准输入的最Python方式是什么?

来自分类Dev

“”的处理方式是什么?和目录中的“ ..”?

来自分类Dev

处理受引用影响的状态的反应方式是什么

来自分类Dev

用REST获取多个资源(批处理获取)的正确方法是什么?

来自分类Dev

C ++中的资源是什么?

来自分类Dev

magento中的资源是什么

来自分类Dev

imagecolorat() 中的“资源”是什么?

来自分类Dev

React.js处理可见性=隐藏的方式是什么?

来自分类Dev

用Python的方式处理具有相同名称的类,模块和包是什么?

来自分类Dev

在Haskell中处理惰性输入通道的惯用方式是什么

来自分类Dev

将有效载荷预处理为Django的惯用方式是什么?

来自分类Dev

处理以不同方式创建的超级用户的最佳方法是什么?

来自分类Dev

处理数据库查询中可能的空值的正确/惯用方式是什么?

来自分类Dev

在c ++中以不同方式处理多个输入命令的正确方法是什么?

来自分类Dev

Rails 4处理过滤器的方式是什么?

来自分类Dev

AngularJS中的“ = *”是什么

来自分类Dev

Clojure的做事方式是什么

Related 相关文章

  1. 1

    以非幂等方式更新资源的最 RESTful 方式是什么?

  2. 2

    Java处理闭包的方式是什么?

  3. 3

    Rails处理多态关联的方式是什么?

  4. 4

    处理异常的最佳方式是什么?

  5. 5

    处理ElasticSearch的最Python方式是什么?

  6. 6

    测试AngularJS指令的惯用方式是什么?

  7. 7

    在URL中表示资源克隆操作的宁静方式是什么?

  8. 8

    处理集合时,在EF 6中处理CRUD操作的正确方法是什么?

  9. 9

    在JavaScript中处理非法参数的惯用方式是什么?

  10. 10

    Python:处理两个列表的“ Pythonic”方式是什么?

  11. 11

    当执行劣质的ReactiveCommands时,ReactiveUI处理异常的方式是什么?

  12. 12

    Python:处理两个列表的“ Pythonic”方式是什么?

  13. 13

    处理标准输入的最Python方式是什么?

  14. 14

    “”的处理方式是什么?和目录中的“ ..”?

  15. 15

    处理受引用影响的状态的反应方式是什么

  16. 16

    用REST获取多个资源(批处理获取)的正确方法是什么?

  17. 17

    C ++中的资源是什么?

  18. 18

    magento中的资源是什么

  19. 19

    imagecolorat() 中的“资源”是什么?

  20. 20

    React.js处理可见性=隐藏的方式是什么?

  21. 21

    用Python的方式处理具有相同名称的类,模块和包是什么?

  22. 22

    在Haskell中处理惰性输入通道的惯用方式是什么

  23. 23

    将有效载荷预处理为Django的惯用方式是什么?

  24. 24

    处理以不同方式创建的超级用户的最佳方法是什么?

  25. 25

    处理数据库查询中可能的空值的正确/惯用方式是什么?

  26. 26

    在c ++中以不同方式处理多个输入命令的正确方法是什么?

  27. 27

    Rails 4处理过滤器的方式是什么?

  28. 28

    AngularJS中的“ = *”是什么

  29. 29

    Clojure的做事方式是什么

热门标签

归档