访问另一个作用域中的当前ng重复迭代元素



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

我想从ng重复作用域访问控制器中的fixture对象以获取详细信息页面,但似乎无法做到

HTML

第1页:

<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页:

<div class="lineup_home">
<h2>
<span class="flag-icon-**fixture.localteam_id**}}></span>
</h2>
<h2>France</h2>
</div>

如有任何帮助,我们将不胜感激。

编辑:

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

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

编辑后:

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

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

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.
}]);

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

  1. 由于您已经在使用服务,因此可以在请求后将数据存储在服务级别,并在执行http请求之前修改服务以检查数据是否已经存在。

  2. 我不熟悉你的布局,但如果有一种方法可以显示数据,使细节显示为列表的子项,你可以通过parentscope访问它。

  3. 您可以将$cacheFactory注入第一个控制器,并使用$cacheFactory.put存储数据,将$cacheFactory注入第二个控制器,然后使用$cacheFactory.get再次检索数据。

这些只是我的三分之一。您还可以使用本地存储、cookie等。

此外,在渲染列表时似乎需要最少的数据量,而在显示项目的全部详细信息时则需要更多的数据量。在第一种状态下,只检索一个包含最低数据需求的列表,然后在导航到详细信息状态时,检索该项的所有数据,这可能会更有效。

ng repeat为每个元素创建一个新的作用域,ng include也创建了一个新作用域。ng为当前元素重复创建的作用域。此范围包含迭代中的当前元素。

最新更新