1

ember-router-example に従って、この非常に基本的な ember ルーターの例を試しました。しかし、実行すると空のページが表示されます。コンソール ウィンドウでエラーを確認しましたが、問題ないようです。なぜこれが機能しないのか、どこが欠けているのかよくわかりません。

ホーム、セクション、アイテムのみの最初のレベルのリンクを作成しようとしています。

誰か助けてくれませんか?

index.html:

    <body>
    <script src="js/libs/jquery-1.7.1.js"></script>
        <script src="js/libs/jquery.lorem.js"></script>
        <script src="js/libs/bootstrap.min.js"></script>
        <script src="js/libs/handlebars-1.0.0.beta.6.js"></script>
        <script src="js/libs/ember.js"></script>
        <script src="js/app.js"></script>

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

            <div>
                <ul>
                    <li><a {{action "doHome"}}>Home</a></li>
                    <li><a {{action "doSections"}}>Sections</a></li>
                    <li><a {{action "doItems"}}>Items</a></li>
                </ul>
            </div>

             <div>
            {{outlets}}
           </div>

           </script>


            <script type="text/x-handlebars" data-template-name="home">
            <h1>yeah right Home</h1>
           </script>

           <script type="text/x-handlebars" data-template-name="sections">
            <h1>Oh v in Sections index</h1>
           </script>


           <script type="text/x-handlebars" data-template-name="items">
            <h1>correct in Items Index Page</h1>
           </script>
    </body>

app.js:

    $(function() {


    App = Ember.Application.create()


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


    App.HomeController = Ember.Controller.extend();
    App.HomeView = Ember.View.extend({
        templateName:'home'
    });

    App.SectionsController = Ember.Controller.extend();
    App.SectionsView = Ember.View.extend({
        templateName:'sections'
    });


    App.ItemsController = Ember.Controller.extend();
    App.ItemsView = Ember.View.extend({
        templateName:'items'
    });

    App.Route = Ember.Route.extend({
        root: Ember.Route.extend({
            doHome : function(router,event){
                router.transitionTo('home');
            },

            doSections:function(router,event){
                router.transitionTo('sections');
            },

            doitems:function(router,event){
                router.transitionTo('items');
            },

            home : Ember.Route.extend({
                route : '/',
                connectOutlets:function(router,event){
                    router.get('applicationController').connectOutlet('home');
                }
            }),

            sections : Ember.Route.extend({
                route : '/sections',
                connectOutlets:function(router,event){
                    router.get('applicationController').connectOutlet('sections');
                }
            }),

            items : Ember.Route.extend({
                route : '/items',
                connectOutlets:function(router,event){
                    router.get('applicationController').connectOutlet('items');
                }
        })

        })//root
}) //router

});
4

2 に答える 2

2

私はあなたのコードでこのフィドルを作成しました。最新のemberhandlebarsを使用してください。で変更する必要があるかもしれませ{{outlets}}{{outlet}}

編集

上記のフィドルは機能していません。更新されたフィドルを参照してください。新しいルーティング API
を使用してルーティング コードを書き直したところ、期待どおりに動作するようになりました。

于 2013-02-10T21:19:29.487 に答える
0

メインのhtmlファイルでテンプレートを定義するときは、templateNameではなく「テンプレート」を使用することになっていると思います。これらのテンプレートを個別のハンドルバー ファイルとして作成し、ビルド ステップを使用する場合は、templateName を使用してそれらを (ファイル名で) 参照します。

スティーブ

于 2013-02-10T18:53:38.220 に答える