我在ng-repeat上有一系列锚标记,它们通过fixture.id变量路由到特定的详细信息页面。
我想从ng-repeat作用域访问详细信息页面控制器中的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>任何帮助都将不胜感激。
编辑:
所以我可以从网址访问fixture.id,这很好。我想从fixture对象访问其他属性,比如fixture.localteam_id。我该怎么做呢?
此外,我知道我只能从getFixtures数组访问它,但这是一个发出$http请求的服务。我不想每次都这样做,所以最好使用已经填充的数据。如果这有意义的话。
发布于 2016-05-24 04:17:28
编辑后的:
要从您通过$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.
}]);发布于 2016-05-24 04:53:32
当您导航到第二个页面时,第一个页面中的控制器不再在作用域中,并且其数据不再可用。有很多方法可以解决这个问题。
那只是我头顶上的3个。您也可以使用本地存储、cookie等。
此外,听起来在呈现列表时需要最少的数据量,而在显示项目的完整详细信息时需要更多的数据。如果只检索包含第一个状态中最低数据需求的列表,然后在导航到详细状态时检索该项目的所有数据,可能会更有效。
发布于 2016-05-24 14:54:04
ng-repeat为每个元素创建一个新的作用域,ng-include也创建一个新的作用域。由ng-repeat为当前元素创建的作用域。此范围保存迭代中的当前元素。
https://stackoverflow.com/questions/37399643
复制相似问题