【问题标题】:Angular - different route, same template/controller,different loading methodAngular - 不同的路线,相同的模板/控制器,不同的加载方法
【发布时间】:2013-04-10 08:33:41
【问题描述】:

我想使用路由,但我总是想使用相同的模板和控制器。我有这样的路线:

**a/:albumid**

**i/:imageid**

在第一种情况下,我想加载图像数组并将它们添加到列表中。在第二种情况下,我想加载单个图像并将其添加到列表中。

所以区别仅在于数据加载。最有效的方法是什么?

还可以为 ng-show 制作动画吗?像 jQuery 的 slideDown 之类的东西?

【问题讨论】:

    标签: angularjs routing angularjs-routing


    【解决方案1】:

    查看这篇文章,它描述了一种完全按照您的意愿行事的方法:

    http://www.bennadel.com/blog/2420-Mapping-AngularJS-Routes-Onto-URL-Parameters-And-Client-Side-Events.htm

    我用过这个技术,效果很好。

    简而言之,路由是这样的:

    $routeProvider
        .when("/a/:album_id", {
            action: "album.list"
        }).when("/i/:imgid", {
            action: "images.load"
        })
    

    然后在您的控制器中,您可以访问$route.current.action 并执行相应的操作。诀窍是在你的控制器中创建一个函数来完成所有工作(文章称之为render()),然后在 $routeChangeSuccess 触发时调用该函数:

    $scope.$on(
       "$routeChangeSuccess",
       function( $currentRoute, $previousRoute ){
            // Update the rendering.
            render();
        }
    );
    

    【讨论】:

    • 谢谢!你拯救了我的一天!
    【解决方案2】:

    我创建了一个超级简单的指令来处理这个问题,它允许路由更像 Rails 或 Codeigniter 路由,其中​​控制器方法位于路由定义中。方法名称在 routeProvider.when 选项中设置,指令在路由模板中设置。 见:https://stackoverflow.com/a/22714634/250991

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2013-09-24
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多