1

Yeoman angular scaffolder から基本的なインストールを行った後、ルーターに基本的なテンプレートをロードさせることができません。これが私のセットアップです

//  index.html
<body ng-app="mvmdApp">
  <div class="container" ng-view=""></div>//  not sure how ng-view plays into this


//  app.coffee
myAppModule = angular.module("mvmdApp", [])
  .config( ($routeProvider, $locationProvider) ->
    $locationProvider.html5Mode true

    $routeProvider
      .when("/",
        templateUrl: "views/main.html"
        controller: "MainCtrl"
      )
      .when("/youtube",
        templateUrl: "views/youtube.html"
        controller: "YoutubeCtrl"
      )
  )


//  main.js
angular.module('mvmdApp')
  .controller 'MainCtrl', ($scope) ->
    $scope.awesomeThingss = [
      'HTML5 Boilerplate'
      'AngularJS'
      'Karma'
    ]

    $scope.youtube = ( $scope ) ->
      alert 'hi'

  .controller "YoutubeCtrl", ( $scope ) ->
    alert 'Work!'


//  views/youtube.html
<div class="youtube-unit">
  <div class="outer-frame">
    <div class="inner-frame">
      <iframe width="560" height="315" src="//www.youtube.com/embed/2FNEiTjcMM0" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
    </div>
  </div>
</div>

メインコントローラーは正常にロードされます。可能な限り複製してみました

localhost:9000/youtube にアクセスすると、Cannot GET /youtubeメッセージが表示されます。あらゆる組み合わせを試したような気がします。

4

2 に答える 2

0

Html5 モードは Javascript だけでなく、それをサポートするサーバーも必要です。

/youtube を試すと、最初にサーバーに送られます。サーバーが管理できない場合は、Angular アプリケーションをレンダリングして、ルーターがルートをキャッチし、必要なものを表示できるようにする必要があります。

正直なところ、Yeoman が html5 モードをサポートしているかどうかはわかりません。

Yeoman のようなlinemanjsを試すことができ、html5 モードをサポートします。

Yeoman を使用する場合は、yeoman の html5 モードをグーグルで検索するか、hashbang を使用してください :)

于 2013-08-31T23:17:00.413 に答える