【问题标题】:How do I dynamically route through a list of objects in Angular.js?如何动态路由 Angular.js 中的对象列表?
【发布时间】:2015-05-06 20:46:11
【问题描述】:

我怎样才能使这个<a> 标记链接到一个模板,然后根据它链接到的项目动态填充数据?

能够通过'project.html' 视图链接到任何网址,例如'/skreens''/viewpoint''/dogedots', 但模板不会动态填充该模板中的表达式。

这是我的项目清单。

<li ng-repeat="project in projects">          
  <a href="#linkUrl">{{project.title}}</a>
</li>

这是他们链接到的视图(project.html)

<h1>{{project.title}}</h1> //right now nothing appears here :(

&lt;a&gt; 链接使用从

加载的静态数据填充其 href
angular.module('MyWeb', ['ngRoute'])
  .config( ['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/viewpoint', {
            templateUrl: '/myWebpage/app/templates/project.html'
            controller:'MainControl'
        })
        .when('/dogedots', {
            templateUrl: '/myWebpage/app/templates/project.html',
            controller:'MainControl'
        })
        .when('/skreens', {
            templateUrl: '/myWebpage/app/templates/project.html'
            controller:'MainControl'
        })
        .otherwise({
            redirectTo: '/',
            templateUrl: '/myWebpage/app/templates/portfolio.html'
        })
  }])
  .controller('MainControl', function($scope){
      $scope.projects = [
         { "id": 0, "linkUrl": "skreens", "title": "Skreens"},
         { "id": 2, "linkUrl": "viewpoint", "title": "ViewPoint Cloud"},
         { "id": 1, "linkUrl": "dogedots", "title": "Doge Dots"}
      ]
  })

控制器:'MainControl' 但项目数据不会填充模板 t

【问题讨论】:

    标签: angularjs routing routes angularjs-routing


    【解决方案1】:

    首先,要使用 ng-router 链接,您应该使用ng-href="{{project.linkUrl}}"。你现在定义它的方式是行不通的。

    就值未正确显示而言,从您发布的内容来看,它并没有表明您正在将控制器绑定到任何地方的视图。这应该发生在 .when 对象中。前任。 .when('/portfolio', { controller:'MainControl', templateUrl:'/myWebpage/app/templates/portfolio.html' })

    【讨论】:

    • 此修复确实有助于改进我的代码,但我仍然无法使用来自每个 project in projects 的数据填充 project.html 页面。为什么要从 ng-href 中删除 #
    • 我认为这将取决于您如何设置项目。我还认为我将 ui-router 与 ng-router 混为一谈,我通常更喜欢前者,而忘记了 ng-router 的一些细节。路由是否正常工作?否则,您可以尝试使用 ng-href="#/{{project.linkUrl}}" 。我想我理解您在下一页遇到的问题。是您在portfolio.html 中的链接并链接到您要显示标题的project.html 吗?
    • 如果是这样,那是因为投资组合的范围已被破坏,并且为下一页创建了一个新的范围 - 它不知道指定了哪个“项目”,应该是未定义的。您需要将该项目名称作为路由参数传递,然后从那里访问它,或者将其存储在服务中。由于服务是单例的,它应该保留所选项目的价值,直到它被更改。
    • 您对 portfolio.html 链接到 project.html 的看法是正确的。使用ng-href="#/{{project.linkUrl}}" 是成功的,并且确实将我链接到project.html,但是project.html 不显示数据。
    • 我已经更新了问题,但在每条路线前都指定了MainControl'/skreens''/viewpoint'。我重新路由后不应该刷新MainControl吗?
    猜你喜欢
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2015-04-24
    • 2017-02-02
    • 2013-05-12
    • 2021-01-27
    相关资源
    最近更新 更多