EmberJS:加载路径时出错:TypeError:无法读取属性' map'为null

时间:2014-06-14 20:56:39

标签: javascript ember.js handlebars.js

我刚刚开始学习Ember,不管怎么说,即使是最简单的事情,也无法让它工作。我现在正在使用Ember-Data的Fixtures来处理MVC部分,而不是过多地关注数据检索。

这是我到目前为止所拥有的:

// Engine

window.Monitor = Ember.Application.create();
Monitor.ApplicationAdapter = DS.FixtureAdapter.extend();

// Routes

Monitor.Router.map(function() {
  this.resource('processes', { path: '/' });
});
Monitor.ProcessesRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('process');
  }
});

// Data model

Monitor.Process = DS.Model.extend({
  name: DS.attr('string'),
  alt: DS.attr('string'),
  icon: DS.attr('string'),
  link: DS.attr('string')
});

// Controllers

Monitor.ProcessesController = Ember.ArrayController.extend({
  itemController: 'process',
  sortProperties: ['name'],
  sortAscending: true
});

Monitor.ProcessController = Ember.ObjectController.extend();

// Test data

Monitor.Process.FIXTURES = [
 {
  name: 'MyTestProcess',
  icon: 'link to icon'
 }
];

这是Ember 101,但我无法理解为什么只是输入这个:

<div class="navtitle">
    Title
</div>

{{#each}}
<li>
    <label>{{name}}</label>
</li>
{{/each}}

......失败了:

Error while loading route: TypeError: Cannot read property 'map' of null
    at Ember.EnumerableUtils.map (http://www.somedomain.com/js/ember-1.5.1.js:1918:15)
    at Ember.Object.extend.pushMany (http://www.somedomain.com/js/ember-data.js:10:6083)
    at http://www.somedomain.com/js/ember-data.js:9:31369
    at invokeCallback (http://www.somedomain.com/js/ember-1.5.1.js:10013:19)
    at publish (http://www.somedomain.com/js/ember-1.5.1.js:9683:9)
    at publishFulfillment (http://www.somedomain.com/js/ember-1.5.1.js:10103:7)
    at http://www.somedomain.com/js/ember-1.5.1.js:18380:7
    at Object.DeferredActionQueues.flush (http://www.somedomain.com/js/ember-1.5.1.js:6127:24)
    at Object.Backburner.end (http://www.somedomain.com/js/ember-1.5.1.js:6215:27)
    at Object.Backburner.run (http://www.somedomain.com/js/ember-1.5.1.js:6254:18)

关于我做错的任何指示?

2 个答案:

答案 0 :(得分:0)

在模板中,您有{{#each}}...{{/each}},当您将数组作为路径模型时,会使用ObjectController。但是你的控制器是ArrayController,因此它将数组视为单个对象而不是它所在的数组。相反,从{{1}}延伸。

答案 1 :(得分:0)

所以,最后,我再次从头开始找到解决方案。您的应用似乎需要ApplicationRouteApplicationController

如果您没有指定把手的范围,那么这些将是默认使用的,如果没有定义,将自动生成。

就我而言,重命名所有内容&#34;进程&#34;到#34;应用程序&#34;解决了我的问题。