0

第一次使用 Ember。

我已经阅读了所有可以和可以使用的帮助建立我的理解的内容。

我已经能够在 rails 模板中渲染 Ember 模板。

现在我正在使用 getJSON 将数据绑定到 ember 模板,但我遇到了一些错误。Uncaught TypeError: Cannot call method 'reopenClass' of undefined Error while loading route: TypeError {}

api/v1/newslinks_controller.rb

class Api::V1::NewslinksController < ApplicationController
  respond_to :json

  def index
    respond_with Newslink.all
  end

  def create
    respond_with Newslink.create(params[:newslink])
  end

  def update
    respond_with Newslink.update(params[:id], params[:newslink])
  end

  def destroy
    respond_with Newslink.destroy(params[:id])
  end
end

/api/v1/newslinks.json

{"newslinks":[{"id":1,"title":"A Sample Post","navlink":"This will be a simple post record."}]}

应用程序.js

    App = Ember.Application.create({
      LOG_TRANSITIONS: true,
      LOG_ACTIVE_GENERATION: true,
      LOG_VIEW_LOOKUPS: true,
      rootElement: '#ember',
      ready: function() {
        console.log('I am app');
      }
    });

    App.Router.map(function() {
        this.resource('newslinks', { path: '/' });
        console.log("I am router")
    });

    App.IndexRoute = Ember.Route.extend({
    });

    App.NewslinksRoute = Ember.Route.extend({
      model: function() {
        return App.Newslink.all();
      }
    });

    App.Newslink.reopenClass({
         all: function() {
           return $.getJSON("/api/v1.newslinks_controller.json").then(function(response) {
                      var newslinks = [];

                      response.newslinks.forEach(function(newslink) {
                  newslinks.push(App.Newslink.create(newslink));
                }); 
                      return newslinks;
              });
         }
    });

newslinks.handlebars

<div class="offset1">
  <h1>Newslinks</h1>

  <ul>
    {{#each newslink in model}}
      <li>{{newslink.title}}</li>
      <li>{{newslink.navlink}}</li>
    {{else}}
      <li>There is no news.</li>
    {{/each}}
  </ul>

  {{outlet}}
</div>

感谢任何帮助!

4

1 回答 1

1

你还没有宣布你的App.Newslink班级。

利用:

App.Newslink = Ember.Object.extend();

App.Newslink.reopenClass ...
于 2013-08-11T22:44:50.143 回答