【问题标题】:Ember save needs headers. Doesnt seem to pass thru RESTAdapter headers functionEmber 保存需要标题。似乎没有通过 RESTAdapter 标头函数
【发布时间】:2015-03-24 01:23:10
【问题描述】:

我需要通过标头传递一个授权令牌,这对findfindQuery 工作正常,但save 似乎没有调用标头函数?!

createRecord: function(store, type, record) {
   var data = {};
   var serializer = store.serializerFor(type.typeKey);

   var snapshot = record._createSnapshot();
   serializer.serializeIntoHash(data, type, snapshot, { includeId: true });

   return this.ajax(this.buildURL(type.typeKey, null, record), "POST", { data: data });
},

在上面的 RESTAdapter 中没有调用 header

我可以很容易地添加一个标头调用,但是……它的缺失似乎很奇怪。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    而不是覆盖存储方法扩展RESTAdapter

    App.ApplicationAdapter = DS.RESTAdapter.extend({
      headers: {
        'API_KEY': 'secret key',
        'ANOTHER_HEADER': 'Some header value'
      }
    });
    

    可以在 RESTAdapter 的 headers 属性上将任意标头设置为键/值对,并且 Ember Data 会将它们与每个 ajax 请求一起发送。

    http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_custom-http-headers

    【讨论】:

    • 在标头中放置断点表明“保存不会 [似乎] 调用标头函数”
    【解决方案2】:

    是的,它简单地覆盖 createRecord.. 似乎有点奇怪,它在 RESTAdapter 中丢失了。

    createRecord: function(store, type, record) {
       var data = {};
       var serializer = store.serializerFor(type.typeKey);
    
       var snapshot = record._createSnapshot();
       serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
    
       var headers = this.headers(); // Add this
    
       return this.ajax(this.buildURL(type.typeKey, null, record), "POST", { headers: headers, data: data }); 
     // And note the headers: data versus data only
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多