2014-09-10 2 views
0


В настоящее время, основной список HTML работаетЩелкните элемент списка, страница транзиты но детали страница показывает только нет сведений об элементе для кроме()

<div class="post row" ng-repeat="(postId, post) in posts"> 
    <a href="{{ post.url }}">{{ post.title }}</a> 

Но когда я нажимаю на элемент (один из многие в списке) и перейти на другую страницу, новая страница не отображает деталь подробно?


Когда я добавить строку ниже, в том числе $ stateParams в зависимости, в контроллер файла расслоение плотной, {{}} post.title появляется, но данные действительно через не проходит.

$scope.post = $scope.posts[$stateParams.id] 



UPDATE
Это код состояния. (игнорировать отсутствующий синтаксис ... im сокращая его). Кто-то помог разрешить предыдущую проблему и предоставил ниже коды для части просмотра (последние 2 состояния).

.state('tab.view', { 
     url: '/posts/:postId', 
     views: { 
     'tab-view': { 
      templateUrl: 'templates/tab-showpost.html', 
      controller: 'PostViewCtrl' 



Как детали доступа после нажатия на элемент списка.

app.controller('PostViewCtrl', function ($scope, $stateParams, Post) { 
    $scope.Post = Post.find($stateParams.postId); //i think this may be broken 

ответ

1

Одним из ключевых кусок, который отсутствует в вашем вопросе, как настроен ваш stateProvider. Пожалуйста, убедитесь, что ваши штаты правильно настроили URL для отправки данных, хотя параметры состояния. У меня есть a codepen here, который показывает один из способов иметь список элементов, в которых щелчок по одному приведет к деталям пользователя. Обратите внимание, как государства устанавливаются ...

angular.module('ionicApp', ['ionic']) 

.config(function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
    .state('tabs', { 
     url: "/tab", 
     abstract: true, 
     templateUrl: "tabs.html" 
    }) 
    .state('tabs.home', { 
     url: "/home", 
     views: { 
     'home-tab': { 
      templateUrl: "home.html", 
      controller: 'HomeTabCtrl' 
     } 
     } 
    }) 
    .state('tabs.detailview', { 
     url: "/detailview/:index", //NOTE: :index is how you use $stateParams later on. 
     views: { 
     'home-tab': { 
      templateUrl: "detailview.html", 
      controller: 'DetailviewTabCtrl' 
     } 
     } 
    }); 


    $urlRouterProvider.otherwise("/tab/home"); 

}); 

Тогда в контроллере ...

.controller('DetailviewTabCtrl', function($scope,$stateParams) { 
    $scope.id = parseInt($stateParams.index);//NOTE: This is the same 'index' 
    $scope.previous = parseInt($stateParams.index) - 1; 
    $scope.next = parseInt($stateParams.index) + 1; 
}); 
+0

hmm мой переход на другую страницу работает только в том, что содержимое не отображается на основе идентификатора ... или в вашем случае индекс :. Я обновил состояния! :) – Thinkerer

1

Я не знаю, что {{post.url}} находится в ng-repeat; но я думаю, вам нужен другой $state, который должен обрабатывать подробный вид.

ли что-то вроде:

<div class="post row" ng-repeat="(postId, post) in posts"> 
    <a ui-sref="postDetail({id:post.id })">{{ post.title }}</a> 
</div> 

Затем нужно определение состояния в приложении config «ы $stateProvider так:

.state('postDetail', { 
     url: "/post/:id", 
     //NOTE: :id will be accessed from the controller using $stateParams later on. 
     templateUrl: "post_detail.html", 
     controller: 'PostDetailCtrl' 
    }) ... 

Это должно сделать это.

+0

Спасибо, Питер, почему это id: post.id и не postId: post.id? Кроме того, я могу перейти на новую страницу ... просто что-то не так с идентификатором ... контент не отображается на новой странице. – Thinkerer

+0

также новый url страницы не показывает: id? ... он идет как ... вкладка/сообщения, а не tab/posts /: id – Thinkerer

+0

В конфигурации состояния любой параметр, который вы хотите, есть то, что вы передадите в ui-sref как объект. Вы также можете сделать '{{ post.title }}'. Я думал, что postId является повторным псевдонимом.Более уместно получить доступ к 'id' объекта' post' во время итерации. – Peter

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