0

ember.js で Router の location プロパティを指定する際に問題があります。App.Router の場所を「history」に設定しない場合に機能する次のコードがあります。設定すると、ページを読み込もうとすると、コンソールに次のエラーが表示されます: Uncaught Error: No route matching the URL '/test/' - /test/ は /var/www/ のディレクトリです。コードは次のとおりです。

app.js

window.App = Em.Application.create({
title: 'Title'
});


App.ApplicationView = Ember.View.extend({
  templateName: 'application'
 })

 App.ApplicationController = Ember.Controller.extend({
   name: 'test'
 })

 App.IndexAboutView = Ember.View.extend({
   templateName: 'index/about'
 })

 App.IndexAboutController = Ember.Controller.extend({
    str: 'my string'
 })

 App.IndexBioView = Ember.View.extend({
   templateName: 'index/bio'
  })

  App.IndexBioController = Ember.Controller.extend({
    str: 'bio text'
 })

 App.Router.reopen({
  location: 'history'
 });

 App.Router.map(function(match){
  this.resource('index', { path: '/' }, function() {
    this.route('about');
    this.route('bio');
   })
  })

そして、私のインデックスファイルは次のようになります:

   <script type="text/x-handlebars" data-template-name="application">


        <div class="navbar navbar-fixed-top">

            <div class="navbar-inner">

                <div class="container">
                    <a class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".navbar-responsive-collapse">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </a>
                    <div class="brand">
                          {{#linkTo "index"}}{{unbound App.title}}{{/linkTo}}   
                    </div>
                    <div class="nav-collapse navbar-responsive-collapse collapse">
                        <ul class="nav">
                            <li><a href="#">a</a></li>
                            <li><a href="#">b</a></li>
                            <li><a href="#">c</a></li>
                        </ul>

                    </div>
                </div>
            </div>
        </div>

        <div class="container">
          {{outlet}}
        </div>
    </script>

    <script type="text/x-handlebars" data-template-name="index/about">
      This is the str from about : {{str}}
    </script>

    <script type="text/x-handlebars" data-template-name="index/bio">
      This is the str from bio : {{str}}
    </script>       
4

3 に答える 3

1

ルーターで rootURL プロパティを設定してみてください。何かのようなもの:

App.Router = Ember.Router.extend({
  rootURL: '/test',
  location: "history"
});

これにより、Router は、ブラウザの履歴のどこから相対パスを開始するかがわかります。

于 2013-01-25T20:41:29.367 に答える
0

インデックス パスに /test/ を追加します。/test/ の代わりにここに実際の例を追加しました。jsbin のデフォルトのルート URL と一致させる必要がありました。/iyexuf/3/edit

App.Router.map(function(match){
  this.resource('index', { path: '/test/' }, function() {
    this.route('about');
    this.route('bio');
   })
  })

3 つのセクション (title、about、bio) 間のナビゲーションを説明するために、about と bio へのリンクを追加しました。

{{#linkTo "index.about"}}About{{/linkTo}}   
{{#linkTo "index.bio"}}Bio{{/linkTo}}  
于 2013-01-25T19:36:25.220 に答える