0

我目前正在尝试学习 ember.js 框架。我有一个非常简单的应用程序,使用 starterkit 作为起点。

app.js 文件包含:

// Application
var App = Em.Application.create();

// Models
App.Person = Ember.Object.extend({
    fName: null,
    surname: null
});

// Controller
App.personController = Ember.ArrayController.create({
    content: [],
    init: function(){
        // create an instance of the person model
        var person = App.Person.create({
        fName: 'Fred',
        surname: 'Bloggs'
    });
    this.pushObject(person);
    }
});

而我index.html的基于默认样板:

<body>
  <script type="text/x-handlebars">
    {{#each App.personController}}
        <p>{{fName}} {{surname}}</p>
    {{/each}}
  </script>


  <!-- The missing protocol means that it will match the current protocol, either http or https. If running locally, we use the local jQuery. -->
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"><\/script>')</script>
  <script src="js/libs/handlebars-1.0.0.beta.6.js"></script>
  <script src="js/libs/ember-0.9.8.1.min.js"></script>
  <script src="js/app.js"></script>
</body>

当我在浏览器中检查时,我没有看到任何 js 错误,并且呈现的 html 显示车把正在呈现,但没有内容。

<div id="ember163" class="ember-view">
    <script id="metamorph-0-start" type="text/x-placeholder"></script><script id="metamorph-0-end" type="text/x-placeholder"></script>
</div>

非常感谢任何关于为什么没有渲染的帮助或解释。我原以为 init 函数会呈现单个用户

问候,

马丁

4

2 回答 2

1

您需要this._super()在声明 var person 之前调用。

于 2012-06-18T14:30:01.603 回答
1

您必须将 App 定义为全局命名空间,不带 var:

http://jsfiddle.net/Sly7/GhBfn/

正如@Jimmy 所写,不要忘记调用_super()init 方法。

于 2012-06-18T18:51:14.110 回答