首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问另一个作用域中的当前ng-repeat迭代元素

访问另一个作用域中的当前ng-repeat迭代元素
EN

Stack Overflow用户
提问于 2016-05-24 04:08:04
回答 3查看 165关注 0票数 1

我在ng-repeat上有一系列锚标记,它们通过fixture.id变量路由到特定的详细信息页面。

我想从ng-repeat作用域访问详细信息页面控制器中的fixture对象,但似乎做不到。

HTML

第1页:

代码语言:javascript
复制
<a href="#/knockout/{{fixture.id}}" ng-repeat="fixture in getFixtures | filter: { formatted_date: '10.06.2016' }:true | limitTo: 1" class="match">

         <div class="flag-wrapper">
             <div class="flag-{{fixture.localteam_id}}"></div>
         </div>
         <div class="flag-wrapper">
             <div class="flag-{{fixture.visitorteam_id}}"></div>
         </div>

</a>

第2页:

代码语言:javascript
复制
<div class="lineup_home">
  <h2>
    <span class="flag-icon-**fixture.localteam_id**}}></span>
  </h2>
  <h2>France</h2>
</div>

任何帮助都将不胜感激。

编辑:

所以我可以从网址访问fixture.id,这很好。我想从fixture对象访问其他属性,比如fixture.localteam_id。我该怎么做呢?

此外,我知道我只能从getFixtures数组访问它,但这是一个发出$http请求的服务。我不想每次都这样做,所以最好使用已经填充的数据。如果这有意义的话。

EN

回答 3

Stack Overflow用户

发布于 2016-05-24 04:17:28

编辑后的

要从您通过$http请求检索到的对象访问其他属性,您可以在"Fixture“模块中创建一个Factory。

因此,无论何时调用"getFixtures“方法,都会更新工厂,所有需要的控制器都可以通过注入共享数据:

代码语言:javascript
复制
angular.module('Fixture')
.factory('FixtureFactory', function() {
   //Get & set methods.
})

.controller('FixtureTableController', ['$scope', 'FixtureFactory',
    function($scope, FixtureFactory) {
   //Call getFixtures
   //Call SET method from Factory.
}])

.controller('FixtureDetailsController', ['$scope', 'FixtureFactory',
    function($scope, FixtureFactory) {
   //Call GET method from Factory to retrieve fixtures array.
}]);
票数 0
EN

Stack Overflow用户

发布于 2016-05-24 04:53:32

当您导航到第二个页面时,第一个页面中的控制器不再在作用域中,并且其数据不再可用。有很多方法可以解决这个问题。

  1. 由于您已经在使用一个服务,因此您可以在请求数据后将其存储在服务级别,并在执行http请求之前修改您的服务以检查数据是否已经存在。
  2. 我不熟悉您的布局,但是如果有一种方式可以以使详细信息显示列表的子级的方式显示数据,您可以通过parentscope访问它。
  3. 您可以将$cacheFactory注入第一个控制器,然后使用$cacheFactory.put存储数据,并将$cacheFactory注入第二个控制器,然后使用$cacheFactory.get再次检索数据。

那只是我头顶上的3个。您也可以使用本地存储、cookie等。

此外,听起来在呈现列表时需要最少的数据量,而在显示项目的完整详细信息时需要更多的数据。如果只检索包含第一个状态中最低数据需求的列表,然后在导航到详细状态时检索该项目的所有数据,可能会更有效。

票数 0
EN

Stack Overflow用户

发布于 2016-05-24 14:54:04

ng-repeat为每个元素创建一个新的作用域,ng-include也创建一个新的作用域。由ng-repeat为当前元素创建的作用域。此范围保存迭代中的当前元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37399643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档