为话语添加新功能

时间:2013-09-26 11:54:51

标签: javascript ruby-on-rails ember.js discourse

我正在尝试在现有代码话语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获得的数据。

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

1 个答案:

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