2016-03-26 3 views
1

Thinksterのチュートリアルに沿ってAngularとMean Stackを学んでいますが、何らかの理由で私のテンプレートが読み込まれたHTMLでインラインで読み込まれないことがあります。誰かが私がここで間違っているところを指摘できますか?コードが正しく塗りつぶされておらず、ブラウザーに読み込まれたときにページに何も描画されません。インラインHTML ng-templatesがロードされない

私はこれについて何を理解していませんか?テンプレートタグは一致していないようですね?私はこのエラーを取得してい

<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Flapper News</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="flapperNews"><!--ng-controller="MainCtrl" style="margin-left:20px; margin-right:20px;"--> 
     <div class="row"> 
      <div class="col-md-6 col-md-offset-3"> 
       <ui-view></ui-view> 
      </div> 
     </div> 
     <!-- Start template --> 
     <script type="text/ng-template" id="/home.html"> 
      <div class="page-header"> 
       <h1>Flapper News</h1> 
      </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.title}}"> 
         {{post.title}} 
        </a> 
        <span ng-hide="post.link"> 
         {{post.title}} 
        </span> 
       </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> 
     <!-- end template --> 
     <!-- start template --> 
     <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> 
     </script> 
     <!-- end template --> 
    </body> 
</html> 

Error: $injector:modulerr 
Module Error 

はここに私のapp.jsだ

/*global angular*/ 
var app = angular.module('flapperNews', []); 
angular.module('flapperNews', ['ui.router']); 
app.factory('posts',[function(){ 
    var o = { 
     posts: [] 
    }; 
    return o; 
}]); 

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'); 
    }]); 

app.controller('MainCtrl', ['$scope','posts', function($scope, posts) { 
    $scope.posts = posts.posts; 
    $scope.posts = [ 
     {title: 'post 1', upvotes: 12}, 
     {title: 'post 2', upvotes: 14}, 
     {title: 'post 3', upvotes: 16}, 
     {title: 'post 4', upvotes: 11}, 
     {title: 'post 5', upvotes: 1} 
     ]; 
    $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]; 
    }]); 
+1

有効なisi-routerアドレスを変更してください。ここに新しいものがありますhttp://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.18/angular-ui-router.js – Konkko

+0

@Konkkoこれはまだ問題を解決しません。 HTMLタグが機能していない – bdeo

+0

モジュールを定義する場所にコードを投稿できますか? – bumpy

答えて

1

それはcloudfare CloudFlareのではありませんあなたの角度-UI-router.jsライブラリアドレスを確認してください。

EDIT

angular.module('flapperNews', ['ui.router']); はJSを作業する最初の行var app = angular.module('flapperNews', ['ui.router']);

ui.routerを追加ホーム状態

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

から不要な;を削除し、行を削除します。

var app = angular.module('flapperNews', ["ui.router"]); 
app.factory('posts',[function(){ 
    var o = { 
     posts: [] 
    }; 
    return o; 
}]); 

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'); 
    }]); 

app.controller('MainCtrl', ['$scope','posts', function($scope, posts) { 
    $scope.posts = posts.posts; 
    $scope.posts = [ 
     {title: 'post 1', upvotes: 12}, 
     {title: 'post 2', upvotes: 14}, 
     {title: 'post 3', upvotes: 16}, 
     {title: 'post 4', upvotes: 11}, 
     {title: 'post 5', upvotes: 1} 
     ]; 
    $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]; 
    }]); 

HTML:

+0

これはまだ動作していません – bdeo

+0

@bdeo編集された答えを参照してください。これはここで動作するはずですPlunker http://plnkr.co/edit/u42STTpQVYATSydzMYeA – Konkko

+0

これは動作するようだと私はそれをplunkerで見ることができますが、私はc9が正しく表示されていないので今はc9の問題だと思います。 @Konkko – bdeo

関連する問題