Angular:将对象数组的索引从ng-repeat传递到访问对象数据

时间:2016-12-31 18:57:46

标签: javascript html angularjs

我有一个用ng-repeat显示的对象数组:

<div class = "row" ng-repeat="article in academicArticles">
    <div class = "col-md-9 academicArticle" ng-click = "index = $index">
        <a ui-sref ="article">
            <h2> {{article.title}} </h2>
            <p> {{academicArticles.indexOf(article)}} </p>
            <img src = "{{article.img}}" class = "img-responsive">
     </a>
    </div>
</div>

我想显示所选的&#34;文章&#34;在另一个州。现在我有:

<div class ="container">
  <div class = "jumbotron">
    <img src = "../../../photos/danielpark.jpg">
    <h1>{{academicArticles[index].title}}</h1>
    <p> Written By: {{academicArticles[index].author}} </p>
  </div>
</div>

没有错误,但{{academicArticles[index].author}}{{academicArticles[index].title}为空。如何在另一个状态中访问所选文章的数据?

2 个答案:

答案 0 :(得分:0)

你可以通过传递所选&#34;文章&#34;的索引来做到这一点。作为状态参数到另一个状态。 假设另一个状态名为state2,你需要将状态参数添加到路由器注册中的状态,例如,如果你像这样修改了新状态,你可以添加索引如下

$stateProvider.state("state2", {
                url: '/state2/:index',
                templateUrl:'state2.html',
                controller: 'state2Controller'});

然后在state2Controller中,您可以使用stateParams服务访问index参数,如下所示:

 (function() {

           angular
              .module("app")
              .controller("state2Controller", state2Controller);

           state2Controller.$inject = ["$scope", "$stateParams"];
           function state2Controller($scope, $stateParams){
            $scope.index = $stateParams.index;

           }
        })()

答案 1 :(得分:0)

我认为你被ng-repeat范围问题困住了,诀窍不是直接将原始类型绑定到范围而是使用像$scope.model$scope.model.authorId这样的对象