共享一个控制器的角度多条路线

2024-01-02

我不确定我是否正确处理了这个问题,但我正在构建一个电子商务网站 - 该网站的一部分有 6 个不同的产品网格页面,每个页面都可以使用相同的视图:

<ul class="products row">
    <li class="product thumbnail col-1 grid" ng-repeat="whisky in whiskies | orderBy: sort">
        <p class="picture">
            <a ng-href="#/json/{{whisky.id}}"><img ng-src="images/scotch/{{whisky.imageUrl}}" alt="{{whisky.name}}"/></a>
        </p>
        <div class="desc">
            <h2>{{whisky.name}}</h2>
            <p class="price"><span>&pound;{{whisky.price}}</span></p>
        </div>
        <div class="actions">    
        <button class="add-to-basket btn btn-primary btn-medium fa fa-shopping-cart" data-item='{"imageUrl" : "{{whisky.imageUrl}}", "price" : "{{whisky.price}}", "startPrice" : "{{whisky.price}}", "name" : "{{whisky.name}}", "totalItems" : "{{1}}"}' ng-click="updateMiniBasket($event)"></button>    
        </div>
    </li>
</ul>

和相同的控制器:

whiskyControllers.controller('whiskyListCtrlr', ['$scope', 'whiskyList', '$http', 

    function($scope, whiskyList, $http){

        whiskyList.getWhiskies().then(function(d) {
            $scope.whiskies = d.data;
        })

    }

])

但需要在路线提供者配置中有不同的路线,即一条去苏格兰,一条去爱尔兰,一条去日本等。

如何对路由进行编码,以便不同的页面共享相同的控制器和视图?是否可以将参数从路由器传递到控制器?

非常感谢


是的,您可以根据需要多次重复使用控制器和视图。如果我理解正确的话,您希望不同的路线使用相同的控制器和视图?这很容易。此外,您希望能够在触发路由时将变量传递到控制器吗?也容易。这是一个不使用的示例ui-router.

angular.module('myApp').config(['$routeProvider', 'whiskeyList', appConfig]); 

function appConfig($routeProvider, wiskeyList) {
  $routeProvider
  .when('/scotch', {
    controller: 'whiskeyListCtrlr',
    resolve: {
      data: function(whiskeyList) {
        return whiskeyList.getWhiskeys();
      }
    }
  })
  .when('/irish', {
    controller: 'whiskeyListCtrlr',
    resolve: {
      data: function(whiskeyList) {
        return whiskeyList.getWhiskeys();
      }
    }
  });
}

显然,这个实现不是 DRY(Don't Repeat Yourself)。我会重新考虑你的实施。我会改变whiskeyList.getWhiskeys()接受一个参数,告诉它要返回的威士忌类型。例如,whiskeyList.getWhiskeys('scotch')。然后,您在控制器中收到的数据将被过滤为仅显示视图所需的数据。

路由器解析函数中映射的数据在控制器中通过名称进行访问。

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

共享一个控制器的角度多条路线 的相关文章

随机推荐

  • 如何使用 jQuery 滚动到某个元素?

    我希望页面滚动到页面顶部的 div 我有页面其他部分的按钮 但是当我滚动到底部并单击按钮时 这不起作用 它不会转到页面顶部 这是代码笔 https codepen io Filizof pen xygWyp editors 1010 htt
  • 等待容器端口打开超时(本地主机端口:[32773] 应该正在侦听)

    我正在尝试使用https github com testcontainers testcontainers scala https github com testcontainers testcontainers scala这是固有的htt
  • QMYSQL可用但无法加载

    QSqlDatabase QMYSQL 驱动程序未加载 QSqlDatabase 可用驱动程序 QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 我挣扎了两天才弄清楚 我做了我的研究相信我 这
  • 在 dplyr tidyverse 中按组对不同行数进行采样

    我想按组从数据框中采样行 但问题是 我想根据另一个表中的数据对不同数量的记录进行采样 这是我的可重现数据 df lt data frame Stratum rep c High Medium Low 10 id c 1 30 Value r
  • ActiveJob::SerializationError - 不支持的参数类型:时间/日期时间

    我正在使用 Rails 5 和 ActiveJob 来处理后台任务 我正在尝试传递一个序列化的对象as json到我的工作 但我收到以下错误 ActiveJob SerializationError Unsupported argument
  • 如何将 Passport 和 Angular-UI 路由结合起来

    我想知道如何将 Angular UI Routing 与 Passport 结合起来 我找到的所有示例都使用 node js 路由 var routerApp angular module routerApp ui router route
  • 使用 json_modify.py 更改 JSON 键名称

    如何使用更改 JSON 键名称json 修改 py https github com integr8ly installation blob master library json modify py 我有以下数组 我想更改public i
  • System.Data.OracleClient 不适用于 64 位 Oracle 客户端

    我设计了一个 C 应用程序来连接到 Oracle 数据库并更改架构用户密码 我的参考程序集是来自以下位置的 System Data OracleClient C Program Files x86 Reference Assemblies
  • Rails 4 中的 has_many 'conditions' 选项相当于什么?

    有人能告诉我在 Rails 4 中执行以下行的等效方法是什么吗 has many friends through gt friendships conditions gt status accepted order gt first nam
  • MSBuild - 如何复制可能存在或不存在的文件?

    我遇到一种情况 我需要在 MSBuild 脚本中复制一些特定文件 但它们可能存在也可能不存在 如果它们不存在也没关系 我就不需要它们了 但标准
  • 在未知的 NSMutableArray 深度中搜索值

    好吧 我问了错误的问题 所以我编辑了原来的问题 我将数组存储在数组中 以及 NSDictionaries 它是一种实用程序类型的应用程序 没有固定的结构 用户可以根据需要输入嵌套信息 理想情况下 我需要一种方法来滚动浏览给定参数 一种类的类
  • Cordova Android 状态栏设置为透明

    我正在尝试使用下面的这个插件将状态栏设置为透明 但我无法实现它 我可以将其更改为不同的颜色 但不透明 https github com apache cordova plugin statusbar https github com apa
  • 下载旧版本的 Google App Engine SDK

    在哪里可以找到下载旧版 GAE SDK 例如 1 9 15 我需要找出覆盖范围 也许使用第 3 方 API 该 API 与最新版本不能很好地配合 这取决于相应的 SDK 是否仍受官方支持 这两种类型都可以在appengine sdks ht
  • 使用文本框输入在画布上移动对象

    我有一个画布 可以在上面添加图层 这些图层可以移动 选择 旋转 调整大小等 在画布下方 我显示图层的属性 x y 宽度 高度 我想做的是 当我更改包含 x 和 y 坐标的文本框中的值时 图层应该重新定位到我输入的坐标 我已经尝试了几件事 但
  • 在 Windows 中更改 Python 3 中的“区域设置首选编码”

    我正在使用 Python 3 最近从 Python 2 切换而来 我的代码通常在 Linux 上运行 但有时 不经常 在 Windows 上运行 根据 Python 3 文档open https docs python org 3 libr
  • 以编程方式单击时突出显示 TextView

    我动态生成 TextView 其工作方式类似于按钮 现在我想在他们受到压力时突出显示他们 比如更改文本颜色或背景颜色 我尝试过使用选择器 但它不起作用
  • 如何设置 PowerShell Cmdlet 的默认输出格式?

    我正在 C 中创建一个 PowerShell Cmdlet 以从 JSON 文件读取字段并输出一些对象 这些对象是简单的 POCO 类型 public class FieldDefinition public FieldDefinition
  • C#动态编译字符串和.cs文件

    我正在开发一个网站 用户可以在该网站上针对浏览器文本区域中的问题实现 C 代码解决方案并提交 然后 服务器将将该代码与我在服务器上提供的预定义接口一起编译 将其视为一种策略设计模式 我提供一个策略接口 由用户实现 所以我需要在运行时一起编译
  • 部分排序数组,最后 n 个元素已排序?

    有没有办法对数据数组执行部分排序 以便对最后 n 个元素进行排序 我的意思是使用标准库 而不是实现我自己的排序函数 这就是我现在正在做的事情 示例输出 使用较少的比较器 2 1 4 5 6 8 10 之后的元素 都大于之前的元素 但仅限于右
  • 共享一个控制器的角度多条路线

    我不确定我是否正确处理了这个问题 但我正在构建一个电子商务网站 该网站的一部分有 6 个不同的产品网格页面 每个页面都可以使用相同的视图 ul class products row li class product thumbnail co