0

我正在尝试在现有的代码话语 ember rails 应用程序中添加 WatchList 功能

我添加了以下代码

 Discourse.Route.buildRoutes(function() {
    var router = this;

    this.resource('watchLists', { path: '/watch_lists' }, function() {
        this.resource('watchList', {path: ':watch_list_id'});
     });
  });

在 ember 控制器中

 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);
      });
   });

在 ember 中查看 js

   Discourse.WatchListsView = Ember.View.extend({});

在 ember 路由 js 中

     Discourse.WatchListsRoute = Discourse.Route.extend({
         model: function() {
            return Discourse.WatchList.find();   
         }
    });

当我渲染车把模板时,我得到了一个 WatchListsController 对象,没有我们从 ajax 获得的数据。

任何机构都可以指出我做错了什么。

4

1 回答 1

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);
      }
    });
  }
});
于 2013-09-26T22:02:50.493 回答