【问题标题】:Passing ng-repeat data to another state in angular ui router?将ng-repeat数据传递到角度ui路由器中的另一个状态?
【发布时间】:2017-03-27 18:48:44
【问题描述】:

我在 angularjs 中遇到了一些关于 ui-router 的问题。我正在尝试将数据从一种状态传递到另一种状态。

数据:

$scope.MyData = [

{
  "name": "Alice",
  "age": "20",
  "email": "example@example.com"
},

{
  "name": "Bob",
  "age": "20",
  "email": "example1@example.com"
}
];

查看:

  <div ng-repeat="data in MyData" >
        <div>
          <span>Name: {{data.name}}</span>
          <span>Age: {{data.age}}</span>
        </div>
   </div>

当用户点击此 div 时,我想在 contact.details 状态视图中显示点击联系人的电子邮件数据。

控制器:

 .config(function($stateProvider, $urlRouterProvider) {
      $stateProvider
        .state('contact.list', {
          url: '/contacts',
          templateUrl: 'templates/contact-list.html',
          controller: 'contactCtrl'
        })

        .state('contact.details', {
          url: '/contactdetails',
          templateUrl: 'templates/contact-details.html',
          controller: 'contactCtrl'
        })

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案1】:

    你的 contact.details 状态应该有 params 。像这样:

    .state('contact.details', {
        url: '/contactdetails',
        params: {contact: null},
        templateUrl: 'templates/contact-details.html',
        controller: 'contactCtrl'
    })
    

    把下面的属性放在你想打开上面状态的地方:

    <a ... ui-sref="contact.details({contact: data})" ...>...</a>
    

    而且,您应该能够使用给定的信息导航到该状态。您可以通过注入$stateParams 然后使用$stateParams.contact 来访问contact.details 的控制器中的contact

    【讨论】:

    • 如何重置参数值?我面临的问题是,当我第一次单击联系人 1 时,它会正确显示,如果我返回并选择第二个联系人,它会显示第一个联系人的详细信息。
    • @Thanos 不确定是什么问题,尝试解决它,如果它仍然存在,请分享更多代码..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2019-10-10
    • 2021-04-13
    • 2017-03-12
    • 2018-04-10
    • 2019-09-22
    相关资源
    最近更新 更多