我刚刚开始学习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)
关于我做错的任何指示?
答案 0 :(得分:0)
在模板中,您有{{#each}}...{{/each}}
,当您将数组作为路径模型时,会使用ObjectController
。但是你的控制器是ArrayController
,因此它将数组视为单个对象而不是它所在的数组。相反,从{{1}}延伸。
答案 1 :(得分:0)
所以,最后,我再次从头开始找到解决方案。您的应用似乎需要ApplicationRoute
和ApplicationController
。
如果您没有指定把手的范围,那么这些将是默认使用的,如果没有定义,将自动生成。
就我而言,重命名所有内容&#34;进程&#34;到#34;应用程序&#34;解决了我的问题。