0

我开始使用 Ember,虽然我对函数式编程、JS 和 Ember 也很陌生。我遵循了一些教程,并决定尝试在视图中显示控制器中的一个变量。如果我理解错误,请纠正我,但视图作为控制器的上下文,并在车把模板语言中呈现。上面的代码运行没有任何问题,只是没有显示名称,只是来自 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-namedata-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 回答