javascript - 如何允许单击每个项目/帖子,然后在新屏幕中查看它?

标签 javascript angularjs angularjs-scope angular-ui ionic-framework

我正在尝试构建一个简单的杂货教程应用程序列表,然后单击它将进入一个新页面,其中显示杂货的详细信息,例如价格、剩余数量等。

目前,点击评论按钮不会执行任何操作。我看到 URL 发生了抽搐,但它又恢复到原来的帖子 URL。 到目前为止没有语法问题。

我怀疑这可能是由于状态的命名约定或 angular.module 定义出了问题。有人可以启发我吗?谢谢!


这是stateProvider代码

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

.state('tab', {
  url: '/tab',
  abstract: true,
  templateUrl: 'templates/tabs.html'})

.state('tab.posts', {
  url: '/posts',
  views: {
    'tab-posts': {
      templateUrl: 'templates/tab-posts.html',
      controller: 'PostsCtrl'}}})

.state('tab.view', {       //suspect error is here but various combos didnt work
  url: '/posts/:postId', 
  views: {
    'tab-view':{
      templateUrl: 'templates/tab-showpost.html',
      controller: 'PostViewCtrl'}}})


这是 postview.js 文件

var app = angular.module('app.controllers.view', []) //error even if remove this line 
app.controller('PostViewCtrl', function ($scope, $stateParams, Post) {
    $scope.post = Post.find($stateParams.postId);
});


这是 tab-showpost.html

<a href="{{ post.url }}">{{ post.title }}</a>
<a href="#/posts">Back to Posts</a>


这是 tab-posts.html

   <form ng-submit="submitPost()">
        <input type = "text" ng-model="post.title"/>
        <input type = "text" ng-model="post.url"/>      
        <input type = "submit" value="Add Post"/>
    </form>     
    <div ng-repeat="(postId, post) in posts">             
      <a href="{{ post.url }}">{{ post.title }}</a>
      <a href="#/posts/{{ postId }}">comments</a>  
    </div>

最佳答案

我认为它无法解析您的网址,也许这与您命名路由的方式以及它们如何相互继承有关。他们的网址不应该是 #/tab/posts/{{ postId }} 吗?

否则你可以尝试看看它是否可以与 ^ 一起使用以使路线绝对而不是相对于父路线。

因此,要使网址正常工作,请尝试

.state('tab.view', {       //suspect error is here but various combos didnt work
  url: '^/posts/:postId', 
  views: {
    'tab-view':{
      templateUrl: 'templates/tab-showpost.html',
      controller: 'PostViewCtrl'}}})

否则,如果我是正确的,它将采用相对于其父级(在本例中为 tab)的路径,因此具有 url #/tab/posts/{{ postId }}。

关于javascript - 如何允许单击每个项目/帖子,然后在新屏幕中查看它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24979576/

相关文章:

javascript - 用于注册表单的验证码不起作用

angularjs - 使用 ngRepeat => 不可编辑的输入将输入绑定(bind)到基元数组

javascript - 如何从外部源捕获console.log?

javascript - AJAX - 另一个函数可以在成功的过程中执行吗?

javascript - 如何将值从 Jquery 传递给 Angular Js?

angularjs - 私有(private) angular.service 或 Controller

javascript - Angular ,ui-路由器 : how to ngShow from Directive template?

javascript - 在 Angular 中将事件从服务传递到 Controller

javascript - 如何在 ng-repeat 中使用 ng-click?

javascript - 如何在 Phaser 3 中将数据从一个场景传递到另一个场景?