Ember.js 在模型中加载数据时实现自定义ajax调用

Ember.js 在模型中加载数据时实现自定义ajax调用,ember.js,Ember.js,在我的Emberjs应用程序中,我有一个员工模型,我应该通过REST Get API调用加载该模型,在这里,我必须首先对API进行令牌身份验证,然后开始加载数据,我知道如何使用JQuery轻松实现这一点,但不确定如何在Emberjs中实现这一点,因此,如果有人能告诉我如何做,我将不胜感激 下面是我用于身份验证、提取员工数据的JQuery代码,以及我的EmberJS模型代码 谢谢 身份验证: 调用以加载员工数据: 余烬模型 App.Store = DS.Store.extend({ revis

在我的Emberjs应用程序中,我有一个员工模型,我应该通过REST Get API调用加载该模型,在这里,我必须首先对API进行令牌身份验证,然后开始加载数据,我知道如何使用JQuery轻松实现这一点,但不确定如何在Emberjs中实现这一点,因此,如果有人能告诉我如何做,我将不胜感激

下面是我用于身份验证、提取员工数据的JQuery代码,以及我的EmberJS模型代码

谢谢

身份验证:

调用以加载员工数据:

余烬模型

App.Store = DS.Store.extend({
  revision: 11
});

App.Employee = DS.Model.extend({
  employeeID:             DS.attr('string'),
  employeeName:        DS.attr('string')
});

App.Store.reopen({
 adapter: 'DS.RESTAdapter'
});

作为一个黑客,你可以使用类似这样的东西来为每个调用添加带有令牌的头。但是,我认为您应该为此使用专用的auth库


此外,您的商店还有修订版:11-我相信这是旧版本。

尝试以下内容:

App.ApplicationAdapter = DS.RESTAdapter.extend({
  setHeaders: function() {
    this.set('headers', { "Token": "0000000-0000-0000-0000-00000000" });
  }.on('init');
});
App.Store = DS.Store.extend({
  revision: 13,
  adapter: DS.RESTAdapter.extend({
    ajax: function(url, type, hash) {
      if (!hash) {
        hash = {};
      }
      hash.beforeSend = function(xhr) {
        xhr.setRequestHeader("Authorization", "Token " + window.sessionToken);
      };
      return this._super(url, type, hash);
    }
  })
});

我认为您需要使用ember-data-1.0.0-beta.x才能正常工作。

您可以向所有ember AJAX请求添加标题,如下所示:

App.ApplicationAdapter = DS.RESTAdapter.extend({
  setHeaders: function() {
    this.set('headers', { "Token": "0000000-0000-0000-0000-00000000" });
  }.on('init');
});
App.Store = DS.Store.extend({
  revision: 13,
  adapter: DS.RESTAdapter.extend({
    ajax: function(url, type, hash) {
      if (!hash) {
        hash = {};
      }
      hash.beforeSend = function(xhr) {
        xhr.setRequestHeader("Authorization", "Token " + window.sessionToken);
      };
      return this._super(url, type, hash);
    }
  })
});

我在生产中使用了这段代码。

一个非常实际可行的解决方案是避免使用EmberData,而只是以您已经知道的方式使用ajax。让我们从Discussion的创始人(使用无余烬数据的余烬)那里看一下本教程:


我已经将ember更新为1.3,将ember数据和把手更新为ember 1.3附带的数据和把手。问题是,在我为employees模型定义了自定义适配器之后,什么都没有发生,所以我希望找到的只是一个示例,其中包含为模型(例如employees)使用自定义重新适配器URL以及如何使customAdapter通过联系API并在标头中发送令牌来从API加载数据。我已经检查了ajaxPrefilter,但我不确定这对我有什么帮助,尤其是ember甚至没有处理rest适配器的代码。试过了,但应用程序甚至没有在服务器上调用API…有什么想法吗?我不确定我是否理解你的问题。你的应用程序没有向API发出任何请求?您需要从API中获取一些东西,在路由中使用类似这样的内容:
this.store.find('employee')