0

関数型プログラミング、JS、Emberも初めてですが、Emberを使い始めました。いくつかのチュートリアルに従い、コントローラーから 1 つの変数をビューに表示することにしました。間違って理解した場合は訂正してください。ただし、ビューはコントローラーのコンテキストとして取得され、ハンドルバー テンプレート言語内でレンダリングされます。上記のコードは問題なく実行されます。名前だけが表示されず、loginState テンプレートからプレーン テキストが飛び出します。

//app.js
App = Ember.Application.create();

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


App.ApplicationController = Ember.Controller.extend();

App.LoginStateView = Ember.View.extend({
  templateName: 'loginState'
});

App.LoginStateController = Ember.Controller.extend({
   name: 'Juriy'
});

App.Router = Ember.Router.extend({
   root: Ember.Route.extend({
   index: Ember.Route.extend({
     route: '/',
     connectOutlets: function(router){
     router.get('applicationController').connectOutlet('loginState');
     }
   })
 })
});

//index.html
<body>

<script type="text/x-handlebars" data-templamte-name="application">
          My login page.
          {{outlet}}
    </script>

    <script type="text/x-handlebars" data-templamte-name="loginState">
          The name in the login state is {{name}}
    </script>

</body>
4

2 に答える 2

2

TLDR: タイプミスが原因です。data-templamte-nameテンプレートのdata-template-name両方をに置き換えれば、うまくいくはずです。


この問題をデバッグするために、各テンプレートの上部近くに次を追加しました。

  <pre>The context for application is: {{this}}</pre>  
  <pre>The context for loginState is: {{this}}</pre>  

この追加により、次の出力が得られました。

The context for loginState is: <App.ApplicationController:ember194>
The name in the login state is

したがって、アプリケーション テンプレートはまったくレンダリングされ、loginState はアプリケーション コントローラーのコンテキストでレンダリングされます。テンプレートの名前が正しくないかのようです....

于 2013-01-19T16:17:51.177 に答える
1

テンプレート定義にタイプミスがあるようです:

データ テンプレート名 => データ テンプレート名

于 2013-01-19T16:19:05.537 に答える