2013-11-18 2 views
0

Я пишу базовый тип приложения cms в угловом формате. Я был в состоянии перемещаться по страницам без глубокого связывания так:выберите объект из маршрутаParam в угловом

<li ng-repeat="page in pages"><a href="#" ng-click="select(page)">{{page.linktext}}</a></li> 

с контроллером, имеющий:

$scope.select = function(selected){ 
    $scope.currentPage = selected; 
}; 

Нет, что я использую глубокие ссылки у меня есть:

<li ng-repeat="page in pages"><a href="#/pages/{{page.linktext}}">{{page.linktext}}</a></li> 

там является поставщиком маршрута, который подбирает страницу:

и контроллер использует

$scope.currentPage = $routeParams.pageId; 

Я понимаю, что проблема в том, что я устанавливаю currentPage для id, а не для объекта. Как выбрать объект с этой страницей?

Я добавил jsfiddle в http://jsfiddle.net/cLNmS/

+0

Какой объект вам нужен? Чтобы вы хотели, чтобы объект был создан вручную в ваших $ scope.pages, или вы хотите, чтобы объект маршрута использовался $ routeProvider (или они на самом деле являются одним и тем же объектом?) Возможно, вы можете добавить еще какой-нибудь код. – NicolasMoise

+0

Я хочу страницу, на которой есть страница, переданная в routeParams. – user1469779

+0

Что такое "Страница", где вы это определяете? – NicolasMoise

ответ

1

$scope.currentPage = $scope.pages.filter(function (d) { 
    return d.linktext === $routeParams.pageId; 
})[0]; 

Затем проверьте $scope.currentPage для undefined -ness, чтобы быть уверенным, что юридический адрес был принят.

+0

Спасибо, Кажется, всегда возвращается неопределенный. Что такое «d» в этом примере? – user1469779

+0

['filter' function] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) выполняет обратный вызов (анонимная функция с аргументом' d' здесь) который вызывается для каждого элемента массива. Предполагая, что '$ scope.pages' является массивом, тогда' d' будет итеративно брать значение каждой 'страницы' и возвращать' page' где 'page.linktext === $ routeParams.pageId'. Затем, предполагая, что существует только одна такая «страница», мы выбираем первый элемент из возвращаемого списка. –

+0

Я отредактировал мой вопрос, чтобы включить ссылку jsfiddle. У меня есть ваш ответ, но не могу заставить его работать. – user1469779

Смежные вопросы