【发布时间】:2026-01-07 11:50:01
【问题描述】:
我正在关注 Ember.js Railscast 第 410 集。当我更改我的 router.js 文件时
RandomRaffle.EntriesRoute = Ember.Route.extend({
setupController: function (controller) {
controller.set('content', []);
}
});
到这里
RandomRaffle.EntriesRoute = Ember.Route.extend({
setupController: function (controller) {
controller.set('content', RandomRaffle.Entry.find());
}
});
我得到错误:
处理路由时出错:条目未定义不是函数类型错误:未定义不是 RandomRaffle.EntriesRoute.Ember.Route.extend.setupController 的函数
我的模型/entry.js 文件包含:
RandomRaffle.Entry = DS.Model.extend({
name: DS.attr('string'),
winner: DS.attr('boolean')
});
我的控制器/entries_controller.js 包含:
RandomRaffle.EntriesController = Ember.ArrayController.extend({
// newEntryName: "",
actions: {
addEntry: function () {
RandomRaffle.Entry.createRecord({name: this.get('newEntryName')});
this.set('newEntryName', "");
},
drawWinner: function () {
this.setEach('highlight', false);
var pool = this.rejectBy('winner');
if (pool.length > 0){
var entry = pool[Math.floor(Math.random() * pool.length)];
entry.set('winner', true);
entry.set('highlight', true);
this.get('store').commit();
}
}
}
});
javascripts/store.js
RandomRaffle.Store = DS.Store.extend({});
// Override the default adapter with the `DS.ActiveModelAdapter` which
// is built to work nicely with the ActiveModel::Serializers gem.
RandomRaffle.ApplicationAdapter = DS.ActiveModelAdapter.extend({});
我错过了什么?
【问题讨论】:
-
我认为您必须在
model挂钩中使用find。在setupController之前,添加一个名为model的函数,即return RandomRaffle.Entry.find() -
@MilkyWayJoe 我尝试使用返回 RandomRaffle.Entry.find() 的模型函数添加和替换 setupController。我得到了同样的错误。
-
对于以随机代码编辑此帖子的任何人,请知道在问题中添加代码是不可接受的。唯一可行的情况是 OP 在 cmets 中提供了代码,而忽略了将其包含在问题本身中。
-
@BradleyDotNET 不幸的是我。我无法保持登录状态,因此我错误地将代码添加为匿名。抱歉,感谢您的关注。
-
没问题。请注意,该编辑应该已在审核队列中被拒绝(当然不是,但那是一个不同的问题...),因此您需要确保以您自己的身份进行编辑,以便它们实际出现:)。
标签: javascript ember.js ember-data