试图与Ember获得JSON数据

问题描述:

这里就是我的JSON数据是这样的:试图与Ember获得JSON数据

[{"id":1,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"Lorem ipsum lorem ipsum lorem ipsum"}] 

这里是我的灰烬代码:

window.Messages = Ember.Application.create(); 

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

Messages.MessagesRoute = Ember.Route.extend({ 
    setupControllers: function(controller) { 
    controller.set('content', Messages.Message.find()); 
    } 
}); 

Messages.Message = DS.Model.extend({ 
    msgbody: DS.attr('string') 
}); 

Messages.MessagesController = Ember.ArrayController.extend({ 
    content: [] 
}); 

的事情是我的JSON数据住在/app_dev.php/消息没有在/消息/ ...

我只是试图做的只是一个成功的GET请求,但我不能管理......你能告诉我在做什么错了,所以我可以得到灰烬的一些把握句法?

编辑感谢您的回答。只是告知,经过许多努力,使一些微不足道的东西,我尝试了Angular,它似乎更好,更快,更容易地完成这项工作。所以我正在切换框架。

你会想在适配器上使用命名空间选项。这可以按照以下方式指定,然后在创建商店时使用MyApp适配器。

MyApp.Adapter = DS.RESTAdapter.extend({ 
    namespace: 'app_dev.php' 
}); 
+0

谢谢,我做了这个改变,没有控制台错误..但是:没有json ajax请求:(我想我的路由器没有正确设置..? – 2013-02-16 07:52:05

  1. 我觉得这是更好地通过url选项来指定文件名:

    App.Store = DS.Store.extend({ 修订:11, 适配器:DS .RESTAdapter.create({url:“/app_dev.php” }) });

  2. 您的JSON的结构应如下:

{ 
    messages: [ 
     {"id":1,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"ipsum "}, 
     {"id":2,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"Lorem "} 
    ] 
} 

进一步参考见ember guide

+0

谢谢西蒙。问题是我不能真正的会干扰我的Json是如何生成的,我不知道如何用Mysql .../pho实现这个输出。 – 2013-02-16 21:59:52

Ember要求您使用他们所称的“类型键”来成功读取JSON,换句话说,您需要在对象本身之前放置模型的名称,以便Ember识别该类型。

在我的例子中,我创建了一个Java/Spring后端,并且不想将它添加到我的对象中,为了解决这个问题,您可以创建一个Serializer文件,Ember Serializers的文档,特别是RESTSerializer可以发现here

将typeKey添加到传入JSON覆盖normalizePayload挂钩。下面是我如何做一个例子:

​​

如果你还没有把你的typeKey的对JSON的出路,你可能会遇到类似的问题,当你把或POST数据,所以你会可能需要重载serializeIntoHash挂钩以移除传出数据上的typeKey。这里是一个例子,什么对我有用:

serializeIntoHash: function(hash, type, record, options){ 
    Ember.merge(hash, this.serialize(record, options)); 
} 

希望帮助!我看你切换到角(伟大的决定,我更喜欢灰烬角100倍,但我的工作需要我用灰烬目前,所以我通过它的战斗。)但希望这可以帮助别人谁是遇到类似问题,或者希望或被迫使用Ember。