1

这是我第一次潜入角/平均堆栈,而我这个tutorial一起以下。一直在试图让我的路由正确的,但现在我面对一个空白的index.html不会路线家里或显示任何HTML ...路由与角

谁能搭上故障与我的路由/配置?

这里是我现有的HTML/JS复制和粘贴小提琴。

http://jsfiddle.net/adkw1wzo/

的HTML:

<html> 
    <head> 
    <title>Reddit Clone</title> 
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.js"></script> 
    <script src="app.js"></script> 
    <style> .glyphicon-thumbs-up { cursor:pointer } </style> 
    </head> 
    <body ng-app="redditClone"> 
     <div class="row"> 
     <div class="col-md-6 col-md-offset-3"> 
      <ui-view></ui-view> 
     </div> 
     </div> 

    <script type="text/ng-template" id="/home.html"> 
    <div class ="page-header"> 
     <h1> Reddit Clone</h1> 
     <span> <a href="#/posts/{{$index}}">Comments</a></span> 
    </div> 

    <div ng-repeat="post in posts | orderBy: '-upvotes'"> 
      <span class="glyphicon glyphicon-thumbs-up" 
      ng-click="incrementUpvotes(post)"></span> 
      {{post.upvotes}} 
      <span style="font-size:20px; margin-left:10px;"> 
      <a ng-show="post.link" href="{{post.link}}"> 
       {{post.title}} 
      </a> 
      <span ng-hide="post.link"> 
      {{post.title}} 
      </span> 
      </span> 
      <span> <a href="#/posts/{{$index}}">Comments</a> </span> 
     </div> 

     <form ng-submit="addPost()" style="margin-top:30px;"> 
      <h3>Add a new post </h3> 

      <div class="form-group"> 
      <input type="text" 
      class="form-control" 
      placeholder="Title" 
      ng-model="title"></input> 
      </div> 
      <div class="form-group"> 
       <input type="text" 
       class="form-control" 
       placeholder="Link" 
       ng-model="link"></input> 
      </div> 
      <button type="submit" class="btn btn-primary">Post</button> 
     </form> 
    </script> 

    <script type="text/ng-template" id="/posts.html"> 
    <div class="page-header"> 
     <h3> 
     <a ng-show="post.link" href="{{post.link}}"> 
      {{post.title}} 
     </a> 
     <span ng-hide="post.link"> 
      {{post.title}} 
      <span> 
     </h3> 
    </div> 

    <div ng-repeat="comment in post.comments | orderBy:'-upvotes'"> 
     <span class="glyphicon glyphicon-thumbs-up" 
     ng-click="incrementUpvotes(comment)"> 
     </span> 
     {{comment.upvotes}} - by {{comment.author}} 
     <span style="font-size:20px; margin-left:10px;"> 
     {{comment.body}} 
     </span> 
    </div> 

    <form ng-submit="addComment()" 
     style="margin-top:30px;"> 
     <h3>Add a new comment</h3> 

     <div class="form-group"> 
     <input type="text" 
     class="form-control" 
     placeholder="Comment" 
     ng-model="body"></input> 
     </div> 
     <button type="submit" class="btn btn-primary">Post</button> 
    </form> 
    </script> 
</body> 
</html> 

的JS:

var app = angular.module('redditClone', ['ui.router']); 

// configuration 
app.config([ 
'$stateProvider', 
'$urlRouterProvider', 
function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
    .state('home', { 
     url: '/home', 
     templateUrl:'/home.html', 
     controller: 'MainCtrl' 
    }); 

    .state('posts', { 
     url: '/posts/{id}', 
     templateUrl: '/posts.html', 
     controller: 'PostsCtrl' 
    }); 

    urlRouterProvider.otherwise('home'); 
}]); 

// FACTORY 

app.factory('posts', [function(){ 
    var o = { 
    posts: [] 
    }; 
    return o; 
}]) 

// CONTROLLERS 

app.controller('MainCtrl', [ 
    '$scope', 
    'posts', 
    function($scope, posts){ 
    $scope.test = 'Hello World!'; 
    $scope.posts = posts.posts; 
    $scope.addPost = function() { 
     if (!$scope.title || $scope.title ==='') {return;} 
     $scope.posts.push({ 
     title: $scope.title, 
     link: $scope.link, 
     upvotes: 0, 
     comments: [ 
     {author: 'Joe', body: 'Cool post!', upvotes: 0}, 
     {author: 'Bob', body: 'Great idea but everything is wrong!', upvotes: 0} 
     ] 
    }); 
    $scope.title = ''; 
    $scope.link = ''; 
    } 
    $scope.incrementUpvotes = function(post) { 
    post.upvotes += 1; 
    } 
}]) 

app.controller('PostsCtrl', [ 
    '$scope', 
    '$stateParams', 
    'posts', 
    function($scope, $stateParams, posts){ 
    $scope.post = posts.posts[$stateParams.id]; 

    $scope.addComment = function() { 
     if($scope.body === '') {return;} 
     $scope.post.comments.push({ 
      body: $scope.body, 
      author: 'user', 
      upvotes: 0 
     }); 
     scope.body= ''; 
    } 

    }]); 

回答

2
配置块的

你的代码是一些语法错误搞乱

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

    $stateProvider 
    .state('home', { 
     url: '/home', 
     templateUrl:'/home.html', 
     controller: 'MainCtrl' 
    })//removed `;` here 

    .state('posts', { 
     url: '/posts/{id}', 
     templateUrl: '/posts.html', 
     controller: 'PostsCtrl' 
    }); 

    $urlRouterProvider.otherwise('/home'); //change here.. 
}]); 

阿尔斯啊,你必须选择No Wrap in <head>下拉,同时从CDN

Demo Fiddle

更新加载文件

虽然应用程序的不同状态之间导航,你可以使用ui-sref指令生成href属性URL动态。

<a ui-sref="posts({id: $index})">Post</a> 

如果想从控制器重定向,然后使用$state.go('posts', {id: index})

+0

感谢。任何想法为什么这个相同的代码仍然在本地失败了?我复制一个直接粘贴您更新到我的崇高。我清除了缓存和所有。 – coolalligator15

+0

@你需要coolalligator15包括'angular.js'&'角度-UI-router.js'在您的index.html –

+0

大加赞赏。 – coolalligator15