如何在ember 2.1中从HTTP请求加载XML数据

时间:2015-11-05 21:03:38

标签: ember.js

我是Ember.js的新手,我无法将我的应用程序连接到后端数据。

我目前正在使用ember数据v.2.1,ember v.2.1,ember inspector v.1.9.3

我们正在升级现有应用,我们希望将ember用作前端框架。该应用程序现在是基于Java的,并在前面使用xsl。

我需要做的是通过HTML请求与ember连接到现有的后端,后端返回XML并将其转换为json,以便我可以在ember中使用它。我试着效仿这个例子:https://bendyworks.com/old-new-soap-ember-js/没有任何运气。

使用检查员我可以看到我的模型,但我无法加载其中的任何数据。

我的模型看起来像这样:

// app/models/get-menu.js
import DS from 'ember-data';

    export default DS.Model.extend({
      description: DS.attr('string'),
      url: DS.attr('string')
    });

我有一个适配器:

//adapters/menu.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
    headers: {
        'Content-Type': 'text/xml;charset=UTF-8'
      },

    findAll: function() {
        return this.ajax('LinkForHTTPRequest','POST');
      },
      ajaxOptions: function(url) {
          // pretend to be a 'GET' to avoid certain nastiness in default impl
          var hash = DS.RESTAdapter.prototype.ajaxOptions.call(this, url);
          hash.type = 'GET';
          hash.dataType = 'xml';
          return hash;
        }
});

我有一个序列化器:

import DS from 'ember-data';
import Ember from 'ember';

export default DS.JSONSerializer.extend({
  extractArray: function(store, xmlDoc) {
    var $ = Ember.$;
    var xml = $(xmlDoc).find('TMSMENUS').text();
    var innerXml = $($.parseXML(xml)).find('MENUS');

    return innerXml.map(function(idx, el) {
      return {
        id: idx,
        name: $(el).find('description').text(),
        url: $(el).find('url').text(),
      };
    }).get();
  }
});

0 个答案:

没有答案