简单的ember.js应用程序 - 为什么模型数据不会出现在视图中?

时间:2012-06-18 13:50:56

标签: javascript ember.js handlebars.js

我目前正在尝试学习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函数会渲染一个用户

此致

马丁

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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