我正在尝试在现有代码话语ember rails应用程序中添加WatchList功能
我添加了以下代码
Discourse.Route.buildRoutes(function() {
var router = this;
this.resource('watchLists', { path: '/watch_lists' }, function() {
this.resource('watchList', {path: ':watch_list_id'});
});
});
在余烬控制器中
Discourse.WatchListsController = Discourse.ObjectController.extend({});
在余烬模型中
Discourse.WatchList = Discourse.Model.extend({});
Discourse.WatchList.reopenClass({
find: function() {
jQuery.getJSON("watch_lists").then(function(json) {
var watch_lists = json.watch_lists.map(function(attrs) {
return Discourse.WatchList.create(attrs);
});
});
在余烬视图中js
Discourse.WatchListsView = Ember.View.extend({});
在ember route js
Discourse.WatchListsRoute = Discourse.Route.extend({
model: function() {
return Discourse.WatchList.find();
}
});
当我渲染把手模板时,我得到一个WatchListsController对象,其中包含我们从ajax获得的数据。
任何人都可以指出我做错了什么。
答案 0 :(得分:2)
我看到两个可能的问题。
首先,您可能希望WatchListsController
扩展Discourse.ArrayController
,而不是Discourse.ObjectController
。
您的reopen
块在您发布的示例代码中不是有效的JavaScript。我算了四个{
但只有两个}
。你可能想要这样的东西:
Discourse.WatchList.reopenClass({
find: function() {
return jQuery.getJSON("watch_lists").then(function(json) {
return json.watch_lists.map(function(attrs) {
return Discourse.WatchList.create(attrs);
}
});
}
});